Parse XML file from url using php

2019-07-27 01:16发布

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.

3条回答
Luminary・发光体
2楼-- · 2019-07-27 01:57

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!

查看更多
迷人小祖宗
3楼-- · 2019-07-27 02:06

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);
查看更多
聊天终结者
4楼-- · 2019-07-27 02:06

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);
查看更多
登录 后发表回答