使用SimpleXML将SOAP响应转换为XML

4
我正在尝试将SOAP响应转换为XML。
SOAP有一个信封和一个主体。
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>

当我尝试转换时
$responseXML = simplexml_load_string($string);

我理解

object(SimpleXMLElement)#20 (0) { } 

如果我将$string编辑为soap:Envelopesoap:Body,就可以得到XML。

:有什么问题吗?无法获取XML。

希望这很清楚。有人可以解释一下吗?

2个回答

9

SOAP消息已经是XML格式的。问题在于它有命名空间,因此您需要以不同的方式访问它。(冒号前面的部分是命名空间的标识符。)

这里(谷歌缓存副本)提供了一个使用SimpleXML处理命名空间的示例。
这里提供了一个特定的读取SOAP消息的示例。


1

SimpleXML对命名空间XML需要特殊处理(ref.


完全清楚。但是如果我想访问例如xml->soap:Envelop->soap:Body->item1->item2怎么办? - ntan
因为在这个示例中,"soap:"并没有绑定到命名空间。请注意,不是命名空间前缀必须匹配,而是命名空间本身。 - Dormilich

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接