Rumah > pembangunan bahagian belakang > tutorial php > Bagaimanakah Saya Mengakses Ruang Nama XML Dengan Betul Menggunakan SimpleXML?

Bagaimanakah Saya Mengakses Ruang Nama XML Dengan Betul Menggunakan SimpleXML?

DDD
Lepaskan: 2024-12-28 21:56:19
asal
617 orang telah melayarinya

How Do I Access XML Namespaces Correctly Using SimpleXML?

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:

  • kanak-kanak() Kaedah: Memilih elemen dalam ruang nama tertentu. Ia secara berkesan menukar fokus objek kepada ruang nama itu sehingga bertukar kembali melalui panggilan children() yang lain.
  • attributes() Kaedah: Serupa dengan children(), tetapi digunakan untuk mengakses atribut dalam sesuatu yang ditentukan 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";
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan