使用php从url解析XML文件

时间:2016-05-05 07:23:40

标签: php xml file parsing

我想从另一台服务器解析xml文件。

<?php

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

?>

此代码仅在此文件与页面位于同一服务器上时才有效,但我在另一台服务器上有xml文件。

网页警告:

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仍在使用。

3 个答案:

答案 0 :(得分:1)

似乎您正在访问的网址中存在一些重定向问题,并且很可能simplexml_load_file()没有关注重定向...

因此解决方案是使用file_get_contents()cUrl ...

由于file_get_contents()更容易,我只显示......

代码必须是:

<?php

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

?>

更多:

<?php

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

?>

^那也是完全有效的!

答案 1 :(得分:0)

您应该使用CURL(如果处于活动状态)。

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

答案 2 :(得分:0)

PHP文档:

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.

因此。您使用的是哪个版本?

或者,您可以尝试这样:

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