Mengakses Ruang Nama XML dalam SimpleXML
Ruang nama XML ialah kaedah menggabungkan berbilang format XML dalam satu dokumen sambil mengekalkan asal usul masing-masing. Ruang nama XML ditakrifkan oleh pasangan berpisah bertindih yang terdiri daripada awalan yang menunjukkan ruang nama setempat dan Pengecam Sumber Seragam (URI) yang mengenal pasti ruang nama.
Mengapa Kod dalam Soalan tidak berfungsi?
Percubaan awal untuk mengakses elemen ruang nama dalam contoh, iaitu, ->ns2:item, gagal kerana SimpleXML menjangkakan ruang nama ditakrifkan menggunakan kaedah children() dan attributes().
Mengakses Ruang Nama dalam SimpleXML
Tawaran SimpleXML dua pendekatan untuk pengendalian ruang nama:
Kod dengan Ruang Nama Pengendalian
Berikut ialah versi kod yang diperbetulkan:
define('XMLNS_EG1', 'http://example.com'); define('XMLNS_EG2', 'https://namespaces.example.org/two'); define('XMLNS_SEQ', 'urn:example:sequences'); foreach ($sx->children(XMLNS_EG1)->list->children(XMLNS_EG2)->item as $item) { echo 'Position: ' . $item->attributes(XMLNS_SEQ)->position . "\n"; echo 'Item: ' . (string)$item . "\n"; }
Sebagai alternatif, anda boleh menentukan ruang nama awal apabila memuatkan dokumen menggunakan parameter $namespace_or_prefix fungsi seperti simplexml_load_string.
Nota: Ia disyorkan untuk menggunakan URI ruang nama penuh dan bukannya awalan, kerana awalan boleh berubah, berpotensi memecahkan kod anda.
Atas ialah kandungan terperinci Bagaimanakah Saya Mengakses Ruang Nama XML Dengan Betul Menggunakan SimpleXML?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!