Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Menghuraikan XML Ruang Nama dengan betul dengan XPath SimpleXML?

Bagaimana untuk Menghuraikan XML Ruang Nama dengan betul dengan XPath SimpleXML?

Susan Sarandon
Susan Sarandonasal
2024-12-18 10:05:10671semak imbas

How to Correctly Parse Namespaced XML with SimpleXML's XPath?

Cara Menghuraikan XML dengan Ruang Nama Menggunakan SimpleXML

Masalah:

Apabila cuba menghuraikan XML dengan ruang nama menggunakan SimpleXML, menghadapi masalah dengan registerXPathNamespace() kaedah.

Struktur XML:

<root xmlns:event="http://www.webex.com/schemas/2002/06/service/event">
  <event:event>
    <event:sessionKey>...</event:sessionKey>
    ...
  </event:event>
  ...
</root>

Contoh Pertanyaan Xpath:

Percubaan untuk mengekstrak 'event:sessionKey' nilai menggunakan:

$xml->registerXPathNamespace('e', 'http://www.webex.com/schemas/2002/06/service/event');
$event->xpath('//e:sessionKey')

Penyelesaian:

Isunya terletak pada keperluan kedua-dua awalan ruang nama ('e') dan URI ruang nama penuh dalam pertanyaan XPath , walaupun tanpa menggunakan registerXPathNamespace().

Diperbetulkan Kod:

$xml = new SimpleXMLElement($r);

foreach ($xml->xpath('//event:event') as $event) {
  var_export($event->xpath('event:sessionKey'));
}

Atas ialah kandungan terperinci Bagaimana untuk Menghuraikan XML Ruang Nama dengan betul dengan XPath SimpleXML?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn