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 中国語 Web サイトの他の関連記事を参照してください。