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
Lepaskan: 2024-12-05 22:02:14
asal
668 orang telah melayarinya

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>
Salin selepas log masuk

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'}
Salin selepas log masuk

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"
Salin selepas log masuk

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!

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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan