Menghuraikan XML dengan Berbilang Ruang Nama Menggunakan SimpleXML
Menghuraikan dokumen XML dengan berbilang ruang nama menimbulkan cabaran apabila menggunakan SimpleXML. Untuk berjaya menghuraikan dokumen sedemikian, kita mesti mengendalikan pengisytiharan ruang nama.
Dokumen XML yang disediakan mempunyai berbilang ruang nama:
<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>
Untuk menghuraikan dokumen ini dengan SimpleXML, kita boleh mengikuti langkah berikut:
<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>
Dengan mengikuti langkah ini, kami berjaya menghuraikan dokumen XML dengan berbilang ruang nama menggunakan SimpleXML, membolehkan kami mengakses dan memanipulasi elemen dalam setiap ruang nama dengan berkesan.
Atas ialah kandungan terperinci Bagaimana Menghuraikan XML dengan Berbilang Ruang Nama Menggunakan SimpleXML?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!