Menambahkan Atribut pada Teg XML dengan Regexp
Dokumen XML adalah data berstruktur dan dibentuk dengan baik yang tidak boleh dihuraikan dengan secukupnya menggunakan ungkapan biasa. Adalah penting untuk memanfaatkan alatan dan perpustakaan khusus XML untuk mengubah suai data XML dengan berkesan.
Elakkan Regexp untuk Manipulasi XML
Menggunakan ungkapan biasa untuk memanipulasi dokumen XML adalah sangat tidak digalakkan . XML bukan bahasa biasa dan corak regex tidak mencukupi untuk menavigasi struktur kompleksnya.
Gunakan Sambungan XML
Sebaliknya, adalah disyorkan untuk menggunakan sambungan XML bagi PHP untuk mengubah suai dokumen XML. Pertimbangkan contoh berikut:
<code class="php">$xml = new SimpleXml(file_get_contents($xmlFile)); function process_recursive($xmlNode) { $xmlNode->addAttribute('attr', 'myAttr'); foreach ($xmlNode->children() as $childNode) { process_recursive($childNode); } } process_recursive($xml); echo $xml->asXML();</code>
Kod ini menggunakan kelas SimpleXml untuk memuatkan dokumen XML. Fungsi process_recursive kemudian melintasi pepohon XML, menambah atribut yang dikehendaki pada setiap nod. Akhir sekali, XML yang diubah suai dicetak menggunakan asXML.
Batasan Regexp
Ekspresi biasa gagal mengendalikan struktur XML yang kompleks, seperti:
<code class="xml"><?xml version="1.0" encoding='UTF-8'?> <html> <head> <!-- <meta> ... </meta> --> <script>//<![CDATA[ function load() {document.write('<tt>Test</tt>');} //]]></script> <title><![CDATA[Fancy <<SiteName>> [with Breadcrumbs] > in > title]]></title> </head> <body onload="load()"> <input type="submit" value="multiline button text" /> </body> </html></code>
Corak regex tidak dapat memproses elemen ini dengan betul, menyebabkan XML tidak sah.
Atas ialah kandungan terperinci Adakah Berkesan untuk Menggunakan Regexp untuk Memanipulasi Dokumen XML?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!