【问题标题】:PHP - problems getting XML using simplexml_load_filePHP - 使用 simplexml_load_file 获取 XML 的问题
【发布时间】:2010-12-17 16:43:48
【问题描述】:

我无法使用 simplexml_load_file 函数从文件中获取 XML。我试过用谷歌搜索,但其他人在收到实际错误或警告时似乎都有问题。我没有收到错误和警告,但是当我这样做时:

$sims = simplexml_load_file("http://my-url.com/xml.php") or die("Unable to load XML file!");
var_dump($sims);

输出是:

object(SimpleXMLElement)#1 (1) {
  [0]=>
  string(1) "
"
}



但是,如果我这样做:

$ch = curl_init("http://my-url.com/xml.php");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
curl_close($ch);
echo $output;

输出是:

<?xml version="1.0"?>
<simulators>
    <simulator>
        <mac>00-1A-4D-93-27-EC</mac>
        <friendlyName>a Travis Desk</friendlyName>
        <roundSessions>2</roundSessions>
        <rangeSessions>0</rangeSessions>
        <timePlayed>00:03:21</timePlayed>
    </simulator>
</simulators>



我已经这样做了:

$ch = curl_init("http://my-url.com/xml.php");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
curl_close($ch);

$sims = simplexml_load_string($output) or die("Unable to load XML file!");
var_dump($sims);

哪个输出:

object(SimpleXMLElement)#1 (1) {
  ["simulator"]=>
  object(SimpleXMLElement)#2 (5) {
    ["mac"]=>
    string(17) "00-1A-4D-93-27-EC"
    ["friendlyName"]=>
    string(13) "a Travis Desk"
    ["roundSessions"]=>
    string(1) "2"
    ["rangeSessions"]=>
    string(1) "0"
    ["timePlayed"]=>
    string(8) "00:03:21"
  }
}

我只是想知道为什么第一种方法不起作用?我在 Ubuntu Server 10.04 上运行 PHP 版本 5.3.2-1ubuntu4.5 和 libxml 版本 2.7.6。

谢谢!

-特拉维斯

【问题讨论】:

  • 你能确认网址只是http://my-url.com/xml.php,没有任何$_GET吗?

标签: php xml file load simplexml


【解决方案1】:

我相信这可能是因为您的 xml 内容位于 .php 扩展文件中。您需要将http头设置为xml。

header ("Content-type: text/xml");

将其放在负责吐出 xml 的 php 脚本中输出 xml 之前。 (位于“http://my-url.com/xml.php”的那个)

http://www.satya-weblog.com/2008/02/header-for-xml-content-in-php-file.html

【讨论】:

  • 好建议,但事实证明它是不需要的。可能是个好主意,但我认为 simplexml_load_file 函数只是将 URL 的输出作为字符串,所以我认为在开头有 就足够了。不过,感谢您的回复!
【解决方案2】:

感谢您的快速回复。

@ajreal - 你在正确的轨道上。原来这是我自己在查询字符串中的愚蠢错误,由于某种原因,在通过 cURL 或浏览器调用它时有效,但通过 simplexml_load_file 无效。很抱歉浪费了您的时间!

-特拉维斯

【讨论】:

    猜你喜欢
    • 2013-06-03
    • 1970-01-01
    • 1970-01-01
    • 2012-02-14
    • 2011-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多