Ruang nama dalam SimpleXML: Mengendalikan Teg dan Atribut dengan Titik Bertitik
Dalam dokumen XML, teg dan atribut dengan titik bertindih dalam namanya menandakan keahlian dalam ruang nama, yang membantu membezakan elemen daripada format atau piawaian yang berbeza. SimpleXML menyediakan dua pendekatan untuk mengendalikan ruang nama:
1. Menggunakan Kaedah Kanak-kanak dan Atribut
->children(): Kaedah ini menapis dan mengakses elemen anak dalam ruang nama tertentu. Anda boleh bertukar antara ruang nama dengan memanggil kaedah ini berulang kali.
->attributes(): Serupa dengan ->children(), tetapi mendapatkan semula atribut dalam ruang nama tertentu.
Contohnya:
<document xmlns="http://example.com" xmlns:ns2="https://namespaces.example.org/two" xmlns:seq="urn:example:sequences"> <list type="short"> <ns2:item seq:position="1">A thing</ns2:item> <ns2:item seq:position="2">Another thing</ns2:item> </list> </document>
Snippet XML dengan Ruang nama
Kod SimpleXML untuk mengakses elemen dan atribut:
define('XMLNS_EG1', 'http://example.com'); define('XMLNS_EG2', 'https://namespaces.example.org/two'); define('XMLNS_SEQ', 'urn:example:sequences'); $sx = simplexml_load_string($xml); 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"; }
2. Menggunakan Parameter Ruang Nama
Anda boleh menentukan ruang nama apabila menghuraikan data XML menggunakan parameter $namespace_or_prefix simplexml_load_string, simplexml_load_file atau SimpleXMLElement baharu. Parameter ini boleh sama ada URI ruang nama atau awalan setempat.
Sebagai contoh, jika elemen akar menggunakan ruang nama lalai:
<document xmlns="http://example.com"> <list type="short"> <item>A thing</item> <item>Another thing</item> </list> </document>
Snippet XML dengan Ruang Nama Lalai
Kod SimpleXML:
$sx = simplexml_load_string($xml, null, 0, XMLNS_EG1); foreach ($sx->list->item as $item) { echo 'Position: Not Available' . "\n"; echo 'Item: ' . (string)$item . "\n"; }
Notasi Tangan Pendek (Tidak Disyorkan)
Sebagai pintasan, anda boleh menggunakan awalan setempat ruang nama sebagai parameter kedua kaedah ->children() dan ->attributes(). Walau bagaimanapun, pendekatan ini tidak disyorkan kerana awalan boleh berbeza-beza.
Kesimpulan
SimpleXML menyediakan kaedah yang berkuasa untuk mengendalikan ruang nama dan membolehkan anda bekerja dengan dokumen XML dengan lancar, tanpa mengira penggunaan ruang nama mereka. Memahami ruang nama adalah penting untuk menghuraikan dan mengakses data dengan berkesan dalam dokumen XML yang kompleks.
Atas ialah kandungan terperinci Bagaimanakah SimpleXML Boleh Mengendalikan Ruang Nama dengan Berkesan dalam Dokumen XML?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!