Parser Expat bawaan memungkinkan pemrosesan dokumen XML dalam PHP.
XML digunakan untuk mendeskripsikan data, dengan fokus pada apa data itu. File XML menggambarkan struktur data.
Dalam XML, tidak ada tag yang telah ditentukan sebelumnya. Anda harus menentukan tag Anda sendiri.
Untuk mempelajari lebih lanjut tentang XML, kunjungi tutorial XML kami.
Untuk membaca dan memperbarui - membuat dan memproses - dokumen XML, Anda memerlukan parser XML.
Ada dua tipe dasar parser XML:
Parser berbasis pohon: Parser ini mengubah dokumen XML menjadi struktur pohon. Ini menganalisis seluruh dokumen dan menyediakan akses ke elemen di pohon, seperti Model Objek Dokumen (DOM).
Parser berbasis peristiwa: Memperlakukan dokumen XML sebagai rangkaian peristiwa. Ketika peristiwa tertentu terjadi, parser memanggil fungsi untuk menanganinya.
Parser Expat adalah parser berbasis peristiwa.
Parser berbasis peristiwa fokus pada konten dokumen XML daripada strukturnya. Oleh karena itu, parser berbasis peristiwa dapat mengakses data lebih cepat dibandingkan parser berbasis pohon.
Silakan lihat fragmen XML berikut:
<dari>Jani</dari>
Parser berbasis peristiwa melaporkan XML di atas sebagai rangkaian tiga peristiwa:
Elemen awal: dari
Mulai bagian CDATA, nilai: Jani
Elemen penutup: dari
Contoh XML di atas berisi XML yang dibentuk dengan baik. Namun, contoh ini XML tidak valid karena tidak ada deklarasi tipe dokumen (DTD) yang terkait dengannya.
Namun, hal ini tidak ada bedanya saat menggunakan parser Expat. Expat adalah parser yang tidak memeriksa validitas dan mengabaikan DTD apa pun.
Sebagai parser XML berbasis peristiwa dan tidak tervalidasi, Expat cepat dan ringan, sehingga ideal untuk aplikasi Web PHP.
Catatan: Dokumen XML harus dalam bentuk yang baik atau Expat akan menghasilkan kesalahan.
Fungsi parser XML Expat merupakan bagian integral dari inti PHP. Tidak diperlukan instalasi untuk menggunakan fungsi-fungsi ini.
File XML berikut akan digunakan dalam contoh kita:
<?xml version="1.0" coding="ISO-8859-1"?><note><to>Tove</to><from>Jani</from><heading>Pengingat</heading><body>Don jangan lupakan aku akhir pekan ini!</body></note>
Kita perlu menginisialisasi pengurai XML di PHP, menentukan penangan untuk peristiwa XML yang berbeda, dan kemudian mengurai file XML.
<?php//Inisialisasi parser XML$parser=xml_parser_create();//Fungsi yang digunakan pada awal elemenfunction start($parser,$element_name,$element_attrs) { switch($element_name) { case "CATATAN": echo "-- Catatan --<br>"; break; case "KE": echo "Ke: "; break; case "DARI": echo "Dari: "; "HEADING": echo "Heading: "; break; case "BODY": echo "Pesan: "; }//Fungsi yang digunakan di akhir elemenfunction stop($parser,$element_name) { echo "<br> "; }//Fungsi yang digunakan saat menemukan data karakterfungsi char($parser,$data) { echo $data; }//Tentukan elemen handlerxml_set_element_handler($parser,"start","stop");//Tentukan data handlerxml_set_character_data_handler($parser,"char");//Buka file XML$fp=fopen("test.xml","r");/ /Baca datasementara ($data=fread($fp,4096)) { xml_parse($parser,$data,feof($fp)) atau die (sprintf("Kesalahan XML: %s pada baris %d", xml_error_string(xml_get_error_code($parser)), xml_get_current_line_number($parser))); }/ /Bebaskan XML parserxml_parser_free($parser);?>
Kode di atas akan menampilkan:
-- Catatan --Kepada: ToveFrom: JaniHeading: ReminderPesan: Jangan lupakan aku akhir pekan ini!
Cara kerjanya:
Inisialisasi parser XML melalui fungsi xml_parser_create()
Buat fungsi yang bekerja dengan event handler yang berbeda
Tambahkan fungsi xml_set_element_handler() untuk menentukan fungsi mana yang akan dijalankan ketika parser menemukan tag pembuka dan penutup
Tambahkan fungsi xml_set_character_data_handler() untuk menentukan fungsi mana yang akan dijalankan ketika parser menemukan data karakter
Parsing file "test.xml" melalui fungsi xml_parse()
Jika terjadi kesalahan, tambahkan fungsi xml_error_string() untuk mengubah kesalahan XML menjadi deskripsi teks
Panggil fungsi xml_parser_free() untuk melepaskan memori yang dialokasikan ke fungsi xml_parser_create()
Untuk mempelajari lebih lanjut tentang fungsi PHP Expat, kunjungi manual referensi PHP XML Parser kami.