Rumah >pembangunan bahagian belakang >tutorial php >Bagaimanakah Saya Boleh Mengakses Nama Nod XML Bersempang Menggunakan SimpleXML?

Bagaimanakah Saya Boleh Mengakses Nama Nod XML Bersempang Menggunakan SimpleXML?

Susan Sarandon
Susan Sarandonasal
2024-12-05 22:02:14669semak imbas

How Can I Access Hyphenated XML Node Names Using SimpleXML?

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!

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