使用 SimpleXML 解析具有多个命名空间的 XML
使用 SimpleXML 解析具有多个命名空间的 XML 文档会带来挑战。要成功解析此类文档,我们必须处理命名空间声明。
提供的 XML 文档有多个命名空间:
<code class="xml"><soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/"> <soap-env:Header> <eb:MessageHeader xmlns:eb="http://www.ebxml.org/namespaces/messageHeader"> ... </eb:MessageHeader> <wsse:Security xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/12/secext"> ... </wsse:Security> </soap-env:Header> <soap-env:Body> <SessionCreateRS xmlns="http://www.opentravel.org/OTA/2002/11"> ... </SessionCreateRS> </soap-env:Body> </soap-env:Envelope></code>
要使用 SimpleXML 解析此文档,我们可以按照以下步骤操作:
<code class="php">$xml = simplexml_load_string($xmlString);</code>
<code class="php">$xml->registerXPathNamespace('soap-env', 'http://schemas.xmlsoap.org/soap/envelope/'); $xml->registerXPathNamespace('eb', 'http://www.ebxml.org/namespaces/messageHeader'); $xml->registerXPathNamespace('wsse', 'http://schemas.xmlsoap.org/ws/2002/12/secext');</code>
<code class="php">foreach ($xml->xpath('//eb:MessageHeader') as $header) { var_dump($header->xpath('//eb:CPAId')); // Outputs "something" }</code>
通过以下步骤,我们可以使用SimpleXML成功解析具有多个命名空间的XML文档,从而使我们能够有效地访问和操作每个命名空间内的元素。
以上是如何使用 SimpleXML 解析具有多个命名空间的 XML?的详细内容。更多信息请关注PHP中文网其他相关文章!