Parser DOM bawaan memungkinkan untuk memproses dokumen XML dalam PHP.
XML DOM Parser
Parser DOM adalah parser berbasis pohon(tree-based parser).
Lihatlah pecahan dokumen XML berikut ini :
<?xml version="1.0" encoding="UTF-8"?>
<from>Jani</from>
DOM melihat XML di atas sebagai struktur pohon:
- Level 1: Dokumen XML
- Level 2: Elemen root : <from>
- Tingkat 3: Elemen teks: “Jani”
Instalasi
Fungsi parser DOM adalah bagian dari inti PHP. Tidak diperlukan instalasi untuk menggunakan fungsi ini.
File XML
File XML di bawah (“note.xml”) akan digunakan dalam contoh kita:
<?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>
Load dan Keluaran XML
Kita akan menginisialisasi parser XML, load xml, dan mengeluarkannya :
Output dari kode di atas adalah :
Tove Jani Reminder Don't forget me this weekend!
Jika kita memcoba memilih “View source” di jendela browser, kita akan melihat HTML berikut :
<?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>
Contoh di atas membuat DOMDocument-Object dan memuat XML dari “note.xml” ke dalamnya.
Kemudian fungsi saveXML() menempatkan dokumen XML internal ke dalam sebuah string, sehingga kita dapat mengeluarkannya.
Looping melalui XML
Kita akan menginisialisasi parser XML, memuat XML dan mengulang semua elemen dari elemen <note> :
<?php $xmlDoc = new DOMDocument(); $xmlDoc->load("note.xml"); $x = $xmlDoc->documentElement; foreach ($x->childNodes AS $item) { print $item->nodeName . " = " . $item->nodeValue . "<br>"; } ?
Output dari kode di atas adalah :
#text =
to = Tove
#text =
from = Jani
#text =
heading = Reminder
#text =
body = Don't forget me this weekend!
#text =
Pada contoh di atas kita bisa lihat bahwa ada node teks kosong di antara setiap elemen.
Saat XML dibuat, sering kali XML berisi spasi putih di antara node. Pengurai XML DOM memperlakukan ini sebagai elemen biasa, dan jika kita tidak menyadarinya, terkadang menyebabkan masalah.