Zyngi
Zyngi

Reputation: 17

Parse XML file from url using php

I want to parse xml file from another server.

<?php

    $xml = simplexml_load_file('http://example_page.com/api/test.xml');

?>

And this code work only if this file is on this same server as page, but I have got xml file on another server.

Warning from webpage:

Warning: simplexml_load_file(http://example_page.ugu.pl/api/test.xml) [function.simplexml-load-file]: failed to open stream: Connection refused in /virtual/z/y/example_page.ugu.pl/index.php on line 14

Warning: simplexml_load_file() [function.simplexml-load-file]: I/O warning : failed to load external entity "http://example_page.com/api/test.xml" in /virtual/z/y/example_page.ugu.ugu.pl/index.php on line 14

P.S. allow_url_fopen is still on.

Upvotes: 2

Views: 9989

Answers (3)

Ikari
Ikari

Reputation: 3236

Seems like there is some redirection problem in the url you are accessing, and most probably simplexml_load_file() doesn't follow redirects...

So the solution would be to use file_get_contents() or cUrl...

As file_get_contents() is easier, I am showing that only...

The code would have to be something like:

<?php

    $xml = simplexml_load_string(file_get_contents('http://example_page.ugu.pl/api/test.xml'));

?>

More:

<?php

    $xml = simplexml_load_string(file_get_contents('http://jakdojade.pl/pages/api/outputs/schedules.xml'));

?>

^ That too, totally works!

Upvotes: 3

steve
steve

Reputation: 1418

PHP Documentation:

Note:
Libxml 2 unescapes the URI, so if you want to pass e.g. b&c as the URI parameter a, you have to call simplexml_load_file(rawurlencode('http://example.com/?a=' . urlencode('b&c'))). Since PHP 5.1.0 you don't need to do this because PHP will do it for you.

So. which version are you used?

Or, you can try like this:

$xml_content = file_get_content('http://example_page.com/api/test.xml');
xml = simplexml_load_string($xml_content);

Upvotes: 0

Grommy
Grommy

Reputation: 367

You should use CURL (if is active).

$url = "http://www.you-web-here.com/";
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$xmlString = curl_exec($curl);

Upvotes: 0

Related Questions