0

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

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

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

响应 XML 像这样返回到浏览器:

在此处输入图像描述

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

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

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

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

在此处输入图像描述

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

谢谢您的帮助。

4

1 回答 1

0

You can't mix plain text output with XML output. You need to use one or the other.

Plain Text Output:

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

View the source of the resulting page and you will clearly see the malformed (plain text) response.

If you are outputting XML, I would expect something more like:

foreach($is as $i) {
    echo '<title>', $i['title'], '</title><description>', $i['description'], '</description>';
}
于 2012-11-13T16:28:43.413 回答