使用PHP解析XML - 错误:文档末尾的额外内容

时间:2012-11-13 16:23:38

标签: php xml soap curl simplexml

前言:在发布此问题之前,我仔细搜索并仔细阅读。我看到了一些类似于我的问题,有些问题甚至有相同的错误信息,但大多数都有简单的答案,例如"需要一个根元素。"我一直无法在这里应用这些解决方案,因此我发布了。

我使用PHP和cURL来使用.NET Web服务,其中我以XML格式发送数据,并以XML格式接收响应。它工作正常,我已经验证了.NET服务端的良好写入。当我使用时:

$xml_obj = simplexml_load_string($result);
print $xml_obj->asXML()

响应XML返回到浏览器:

enter image description here

我正在尝试解析该XML,以便我可以对潜在错误和/或成功响应做一些有意义的事情。我正在尝试使用这种方法:

$xml = new SimpleXMLElement($xml_obj);
$is = $xml->xpath('*/i');

foreach($is as $i) {
    echo $i['title'], ': ', $i['description'], "\n";
}

这可能是也可能不是最佳方法。当我执行此操作时,我收到此消息:

enter image description here

我不清楚问题是否在响应XML中(错误消息似乎表明,但我无法找到),或者我是否尝试以错误的方式解析XML。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您不能将纯文本输出与XML输出混合。你需要使用其中一个。

纯文本输出:

foreach($is as $i) {
    echo $i['title'], ': ', $i['description'], "\n";
}

查看结果页面的来源,您将清楚地看到格式错误的(纯文本)响应。

如果您正在输出XML,我希望更像是:

foreach($is as $i) {
    echo '<title>', $i['title'], '</title><description>', $i['description'], '</description>';
}