我有一个从我的网站到基于.net的API的工作SOAP请求。出于某种原因,PHP似乎在解析响应时遇到了问题。
当我转储响应时,大多数检索到的数据都在名为“any”的字符串中。此字符串似乎是返回的XML的副本。它太大而无法粘贴到此问题中,但您可以在此处查看回复内容:http://pastie.org/4165973
我已尝试在simplexml中加载此字符串,但我收到错误:“文档末尾的额外内容”。
有没有人遇到过类似的问题?我该如何解析这个回复?
编辑我将__getLastResponse()保存到文件中,以尽可能获得原始输出。新XML在这里http://pastebin.com/3ZtjDbjw
答案 0 :(得分:1)
XML看起来格格不入。 <ShipToAddress>
可能不正确,但它包含CDATA,这可能是打破解析器的原因。
无论如何,通过XML linter(http://xmlsoft.org/xmllint.html)运行它,看看它有什么用。但是,我的猜测是源API要么不正确地吐出来,要么在打印之前对它做一些事情,所以你提供的实际上不是实时输出。
答案 1 :(得分:0)
xml没有格式错误。相反,该问题与命名空间有关。我最终在PHP Parse Soap Reponse Issue - SimpleXMLElement和Parse XML with Namespace using SimpleXML
的帮助下解决了这个问题