Rumah > pembangunan bahagian belakang > tutorial php > Bagaimana untuk Mengakses Nama Nod XML Bersempang Menggunakan SimpleXML dalam PHP?

Bagaimana untuk Mengakses Nama Nod XML Bersempang Menggunakan SimpleXML dalam PHP?

Patricia Arquette
Lepaskan: 2024-12-14 04:52:10
asal
944 orang telah melayarinya

How to Access Hyphenated XML Node Names Using SimpleXML in PHP?

Membaca Nod XML dengan Nama Bersempang Menggunakan SimpleXML

Dalam PHP, menggunakan SimpleXML untuk mengekstrak data daripada dokumen XML menjadi mencabar apabila anda menghadapi elemen dengan nama sempang. Mari kita selidiki masalah ini dan cari penyelesaian.

Pertimbangkan XML berikut:

<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

Untuk membaca elemen document-meta dan elemen anaknya, pertimbangkan kod awal berikut:

$xml = simplexml_load_string($gFileData);
$namespacesMeta = $xml->getNamespaces(true);
$officeXML = $xml->children($namespacesMeta['office']);
var_dump($officeXML);

echo '<hr />';
Salin selepas log masuk

Kod ini membuang semua elemen anak segera bagi Elemen pejabat, yang merangkumi meta-dokumen. Walau bagaimanapun, cubaan untuk mengakses document-meta secara langsung menggunakan $officeXML->document-meta gagal dan mengembalikan int 0.

Sebab bagi tingkah laku ini terletak pada pengendalian nama sempang oleh SimpleXML. Secara lalai, ia menukarkan nama elemen bersempang kepada camelCase. Dalam kes ini, "document-meta" menjadi "documentMeta". Untuk mengakses elemen ini, gunakan sintaks berikut:

$docMeta = $officeXML->{'document-meta'};
var_dump($docMeta);
Salin selepas log masuk

Dengan menggunakan pendakap kerinting dan tatatanda rentetan, anda boleh mengakses nama elemen sebenar tanpa penukaran huruf lalai SimpleXML. Ini akan berjaya membuang elemen document-meta.

Nota: Sintaks ini hanya digunakan pada nod elemen. Nod atribut dalam @attributes boleh diakses terus menggunakan tatatanda tatasusunan, tanpa mengira sempangnya.

Atas ialah kandungan terperinci Bagaimana untuk Mengakses Nama Nod XML Bersempang Menggunakan SimpleXML dalam PHP?. 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