Membaca Nod XML dengan Nama Bersempang dalam SimpleXML
SimpleXML, perpustakaan PHP untuk menghuraikan dokumen XML, boleh menghadapi kesukaran apabila membaca nod dengan tanda sempang nama. Sebagai contoh, pertimbangkan XML di bawah:
<?xml version="1.0" encoding="UTF-8"?> <gnm:Workbook xmlns:gnm="http://www.gnumeric.org/v10.dtd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.gnumeric.org/v9.xsd"> <office:document-meta xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" office:version="1.1"> <office:meta> <dc:creator>Mark Baker</dc:creator> <dc:date>2010-09-01T22:49:33Z</dc:date> <meta:creation-date>2010-09-01T22:48:39Z</meta:creation-date> <meta:editing-cycles>4</meta:editing-cycles> <meta:editing-duration>PT00H04M20S</meta:editing-duration> <meta:generator>OpenOffice.org/3.1$Win32 OpenOffice.org_project/310m11$Build-9399</meta:generator> </office:meta> </office:document-meta> </gnm:Workbook>
Percubaan membaca nod office:document-meta menggunakan kaedah children() SimpleXML mengakibatkan ralat "Penggunaan meta tetap tidak ditentukan - diandaikan 'meta'". Ini kerana SimpleXML mentafsirkan tanda sempang sebagai pengendali penolakan.
Penyelesaian
Untuk mengatasi isu ini, gunakan tanda kurung kerinting dan bukannya tanda sempang:
$officeXML->{'document-meta'}
Sintaks ini membolehkan anda mengakses meta-dokumen nod.
Mengakses Atribut Bersempang
Walaupun nama elemen sempang memerlukan sintaks tanda sempang, atribut bersempang boleh diakses menggunakan tatatanda tatasusunan biasa:
$root = new SimpleXMLElement($xml); echo $root->{'hyphenated-element'}['hyphenated-attribute']; // prints "bar"
Rujuk dokumentasi SimpleXML Basics untuk contoh tambahan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengakses Nama Nod XML Bersempang Menggunakan SimpleXML?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!