XML Expat Parser bawaan digunakan untuk memproses dokumen XML dalam PHP.
XML Expat Parser
Parser ekspat adalah parser berbasis peristiwa(event-based parser.).
Lihatlah pecahan XML berikut ini:
<from>Jani</from>
Pengurai berbasis peristiwa (event-based parser) melaporkan XML di atas sebagai rangkaian dari tiga peristiwa:
- Elemen awal: from
- Mulai bagian CDATA, nilai: Jani
- Elemen tutup: from
Fungsi XML Expat Parser adalah bagian dari inti PHP. Tidak diperlukan instalasi untuk menggunakan fungsi ini.
File XML
File XML “note.xml” akan digunakan pada contoh di bawah ini :
<?xml version="1.0" encoding="UTF-8"?> <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note>
Menginisialisasi XML Expat Parser
Kita akan menginisialisasi XML Expat Parser di PHP, menentukan beberapa penangan untuk acara XML yang berbeda dan kemudian mengurai file XML.
Contoh :
<?php // Inisialisasi parser XML $parser=xml_parser_create(); // Fungsi yang digunakan di awal elemen function start($parser,$element_name,$element_attrs) { switch($element_name) { case "NOTE": echo "-- Note --<br>"; break; case "TO": echo "To: "; break; case "FROM": echo "From: "; break; case "HEADING": echo "Heading: "; break; case "BODY": echo "Message: "; } } // Fungsi yang digunakan di akhir elemen function stop($parser,$element_name) { echo "<br>"; } // Fungsi yang digunakan saat mencari data karakter function char($parser,$data) { echo $data; } // Tentukan penangan elemen xml_set_element_handler($parser,"start","stop"); // Tentukan penangan data xml_set_character_data_handler($parser,"char"); // Buka file XML $fp=fopen("note.xml","r"); // Membaca data while ($data=fread($fp,4096)) { xml_parse($parser,$data,feof($fp)) or die (sprintf("XML Error: %s at line %d", xml_error_string(xml_get_error_code($parser)), xml_get_current_line_number($parser))); } // Bebaskan parser XML xml_parser_free($parser); ?>
Penjelasan Kode
- Inisialisasi parser XML dengan fungsi
xml_parser_create()
- Buat fungsi untuk digunakan dengan penangan acara 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 - Parse file “note.xml” dengan fungsi
xml_parse()
- Jika terjadi kesalahan, tambahkan fungsi
xml_error_string()
untuk mengubah kesalahan XML menjadi deskripsi tekstual - Panggil fungsi
xml_parser_free ()
untuk melepaskan memori yang dialokasikan dengan fungsixml_parser_create()