Home » PHP » Fungsi Parser XML xml_set_element_handler() Pada PHP

Fungsi Parser XML xml_set_element_handler() Pada PHP

by Hanifah Nurbaeti
by Hanifah Nurbaeti

Section Artikel

Definisi dan Penggunaan

Fungsi xml_set_element_handler() digunakan untuk dapat menentukan fungsi yang akan dipanggil di awal dan akhir elemen dalam dokumen XML.

Catatan: Parameter awal dan akhir juga bisa berupa array yang berisi referensi objek dan nama metode.

Syntax

xml_set_element_handler(parserstartend)

Nilai Parameter

ParameterDeskripsi
parserRequired. Menentukan parser XML yang akan digunakan
startRequired. Menentukan fungsi yang akan dipanggil di awal elemen. Fungsi tersebut harus memiliki tiga parameter:

$parser – Variabel yang berisi parser XML yang memanggil handler
$name – Variabel yang berisi nama elemen, yang memicu fungsi ini, dari file XML sebagai string
$data – Sebuah array yang berisi atribut elemen dari file XML sebagai string
endRequired. Menentukan fungsi yang akan dipanggil di akhir elemen. Fungsi tersebut harus memiliki dua parameter:

$parser – Variabel yang berisi parser XML yang memanggil handler
$name – Variabel yang berisi nama elemen, yang memicu fungsi ini, dari file XML sebagai string

Detail Teknis

Return Value:TRUE jika sukses. FALSE jikga gagal
PHP Version:4.0+

Contoh
Tentukan fungsi yang akan dipanggil di awal dan akhir elemen dalam dokumen XML (note.xml):

<?php
$parser=xml_parser_create();

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: ";
  }
}

function stop($parser,$element_name) {
echo "<br>";
}

function char($parser,$data) {
echo $data;
}

//  Tentukan fungsi yang akan dipanggil di awal dan akhir elemen dalam dokumen XML
xml_set_element_handler($parser,"start","stop");
xml_set_character_data_handler($parser,"char");
$fp=fopen("note.xml","r");

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)));
}

xml_parser_free($parser);
fclose($fp);
?>
  /* Output :
NOTE
To: Tove
From: Jani
Heading: Reminder
Message: Don't forget me this weekend!

You may also like