Dengan keluaran PHP 8.0, DOMDocument, pustaka penghuraian XML terbina dalam PHP, juga telah mengalami perubahan dan peningkatan baharu. Kepentingan DOMDocument dalam PHP adalah jelas, terutamanya dalam memproses dokumen XML Ia sangat berkuasa dan sangat mudah untuk digunakan. Artikel ini akan memperkenalkan ciri dan aplikasi baharu DOMDocument dalam PHP8.0.
1. Gambaran Keseluruhan DOMDocument
DOM (Document Object Model) merujuk kepada model objek dokumen Ia adalah antara muka pengaturcaraan umum yang digunakan untuk memproses model data memori dokumen XML dan HTML. Dalam PHP, DOM disokong oleh kelas DOMDocument, yang boleh digunakan untuk mencipta, mengubah suai, melintasi dan mengendalikan dokumen XML, termasuk penambahan nod, pemadaman, pengubahsuaian, pemerolehan atribut, pemprosesan ruang nama, dsb. DOMDocument menyediakan sejumlah besar kaedah dan atribut untuk memenuhi keperluan operasi XML dalam pelbagai senario.
Penggunaan asas DOMDocument adalah seperti berikut:
1 Buat instance DOMDocument
$dom = new DOMDocument();
2 dokumen XML atau cipta dokumen XML
$dom->load('example.xml');
$dom->createElement('root');
3. Cipta nod (elemen, atribut, teks, ulasan, dll.)
$elemen = $dom->createElement('name');
$attribute = $dom->createAttribute('type ');
$ text = $dom->createTextNode('DOMDocument');
$comment = $dom->createComment('Ini ialah ulasan.');
4 . Tambahkan nod pada dokumen
$dom->appendChild($element);$element->setAttributeNode($attribute);
$element->appendChild($text) ;
$dom- >insertBefore($comment, $element);
Di atas ialah penggunaan asas DOMDocument , seterusnya mari kita lihat ciri dan aplikasi baharu DOMDocument dalam PHP8.0.
2. Ciri baharu
1. Sokongan ruang nama tersirat
Dalam versi sebelumnya, pemprosesan ruang nama memerlukan spesifikasi yang jelas, contohnya:
$dom = baharu DOMDocument('1.0', 'UTF-8');
$root = $dom->createElementNS('http://www.example.com/ns', 'ns:root' ); $dom->appendChild($root);
Dalam kod di atas, URI ruang nama dan nama nod ditentukan melalui kaedah createElementNS() untuk mencipta nod elemen dengan awalan ruang nama . Tetapi dalam PHP8.0, anda boleh menggunakan awalan ruang nama secara langsung dalam nama nod, dan DOMDocument akan menghuraikannya secara automatik ke dalam URI yang sepadan. Contohnya:
$dom = new DOMDocument('1.0', 'UTF-8');
$root = $dom->createElement('ns:root');$ dom ->appendChild($root);
Dalam kod di atas, awalan ruang nama digunakan secara langsung dalam nama nod yang dibuat dan DOMDocument akan diselesaikan secara automatik ke http://www .example.com/ns.
2. Pengoptimuman susunan sisipan nod
Dalam versi sebelumnya, setiap kali nod baharu dimasukkan, DOMDocument akan mengalihkan semua nod adik-beradik selepas nod semasa ke belakang satu kedudukan, dan kemudian Memasukkan nod baharu adalah kurang cekap. Dalam PHP8.0, DOMDocument mengoptimumkan susunan pemasukan nod dan memperkenalkan kaedah baharu insertionIndex(), yang mengira indeks kedudukan sisipan berdasarkan kedudukan nod dan susunan sisipan, dengan itu mengelakkan operasi pergerakan nod yang tidak diperlukan. Contohnya:
$dom = new DOMDocument('1.0', 'UTF-8');
$root = $dom->createElement('root');$child1 = $ dom->createElement('child1');
$child2 = $dom->createElement('child2');
$dom->appendChild($root);
$root- > ;appendChild($child1);
$root->appendChild($child2);
Dalam kod di atas, mula-mula buat nod akar dan dua nod anak, kemudian masukkannya ke dalam akar nod masing-masing, seperti ini Operasi boleh menyebabkan pergerakan nod yang tidak perlu. Dalam PHP8.0, situasi ini boleh dielakkan dengan menggunakan kaedah insertionIndex() untuk menentukan susunan sisipan. Contohnya:
$dom = new DOMDocument('1.0', 'UTF-8');
$root = $dom->createElement('root');$child1 = $ dom->createElement('child1');
$child2 = $dom->createElement('child2');
$root->appendChild($child2);
$root- > ;insertBefore($child1, $root->childNodes[$root->insertionIndex($child2, $child1)]); Di atas Dalam kod, tiga nod pertama kali dicipta, kemudian nod kedua dimasukkan ke dalam nod akar, kemudian kaedah insertionIndex() digunakan untuk mendapatkan indeks kedudukan sisipan, dan akhirnya kaedah insertBefore() dipanggil untuk memasukkan nod pertama ke lokasi yang ditentukan untuk mengelakkan operasi pergerakan nod yang tidak perlu.
3. Aplikasi
$dom = new DOMDocument('1.0', 'UTF-8');
$root = $dom->createElement('root');
$element = $dom->createElement ('name');
$element->setAttribute('type', 'string');
$root->appendChild($element);
$dom->appendChild($ root);
Dalam kod di atas, mula-mula buat contoh DOMDocument dan elemen akar, kemudian buat nod elemen dan nod atribut, tetapkan nilai atribut, tambah nod elemen pada elemen akar, dan akhirnya keluarkan dokumen XML.
(2) Nod elemen traverse
$dom = new DOMDocument('1.0', 'UTF-8');
$dom->load('example.xml' );
$elemen = $dom->getElementsByTagName('name');
foreach ($elemen sebagai $elemen) {
echo $element->nodeValue;
}
Dalam kod di atas , Import dokumen XML melalui kaedah load(), kemudian dapatkan semua nod yang sepadan berdasarkan nama elemen, gunakan gelung foreach untuk melintasi nod dan keluarkan nilai nod.
(3) Ubah suai nod elemen
$dom = new DOMDocument('1.0', 'UTF-8');
$dom->load('example.xml' );
$elemen = $dom->getElementsByTagName('name');
foreach ($elemen sebagai $elemen) {
$element->nodeValue = 'new value';
}
gema $dom->saveXML ();
Dalam kod di atas, dokumen XML juga diimport terlebih dahulu, kemudian semua nod yang sepadan diperoleh mengikut nama elemen, gelung foreach digunakan untuk melintasi nod, dan nilai nod diubah suai, dan akhirnya dokumen XML dikeluarkan.
4. Ringkasan
DOMDocument dalam PHP8.0 mempunyai banyak peningkatan dan pengoptimuman berbanding versi sebelumnya, termasuk sokongan ruang nama tersirat, pengoptimuman susunan pemasukan nod dan ciri lain, yang meningkatkan kecekapan DOMDocument dan memudahkan guna. Apabila menggunakan DOMDocument, kita harus menggunakan sepenuhnya fungsinya yang fleksibel dan berkuasa, digabungkan dengan keperluan sebenar, dan memilih kaedah dan atribut yang sesuai untuk melaksanakan pelbagai operasi XML.
Atas ialah kandungan terperinci DOMDocument dalam PHP8.0. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!