Melintasi berarti perulangan melalui atau perjalanan di pohon simpul.
Melintasi Node Pohon
Sering kali Anda ingin loop dokumen XML, misalnya: ketika Anda ingin mengambil nilai dari setiap elemen.
Ini disebut "Traversing the node tree"
Contoh di bawah loop melalui semua node anak dari <buku>, dan menampilkan nama dan nilai-nilai mereka:
Contoh
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
var x, i ,xmlDoc;
var txt = "";
var text = "<book>" +
"<title>Everyday Italian</title>" +
"<author>Giada De Laurentiis</author>" +
"<year>2005</year>" +
"</book>";
parser = new DOMParser();
xmlDoc
= parser.parseFromString(text,"text/xml");
// documentElement always
represents the root node
x = xmlDoc.documentElement.childNodes;
for (i =
0; i < x.length ;i++) {
txt += x[i].nodeName + ": " +
x[i].childNodes[0].nodeValue + "<br>";
}
document.getElementById("demo").innerHTML = txt;
</script>
</body>
</html>
Keluaran:
title: Everyday Italian
author: Giada De Laurentiis
year: 2005
Cobalah sendiri " Contoh menjelaskan:
- Memuat string XML menjadi xmlDoc
- Dapatkan node anak dari elemen root
- Untuk setiap node anak, output nama node dan nilai node node teks
Browser Perbedaan DOM Parsing
Semua browser modern mendukung spesifikasi W3C DOM.
Namun, ada beberapa perbedaan antara browser. Salah satu perbedaan penting adalah:
- Cara mereka menangani putih-ruang dan baris baru
DOM - Ruang Putih dan Garis New
XML sering mengandung baris baru, atau karakter spasi, antara node. Hal ini sering terjadi ketika dokumen diedit oleh editor sederhana seperti Notepad.
Mengikuti contoh (edited by Notepad) berisi CR / LF (new line) antara setiap baris dan dua ruang di depan setiap node anak:
<book>
<title>Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
Internet Explorer 9 dan sebelumnya TIDAK mengobati kosong putih-ruang, atau baris baru sebagai node teks, sedangkan browser lain lakukan.
Contoh berikut akan menampilkan jumlah anak node elemen root (of books.xml ) memiliki. sebelumnya akan menampilkan 4 node anak IE9 dan, sementara IE10 dan versi, dan browser lainnya akan menampilkan 9 node anak:
Contoh
function myFunction(xml) {
var xmlDoc = xml.responseXML;
x =
xmlDoc.documentElement.childNodes;
document.getElementById("demo").innerHTML =
"Number
of child nodes: " + x.length;
}
Cobalah sendiri " PCDATA - diurai data Karakter
XML parser biasanya mengurai semua teks dalam dokumen XML.
Ketika elemen XML parsing, teks antara tag XML juga diurai:
<message>This text is also parsed</message>
Parser hal ini karena elemen XML dapat berisi unsur-unsur lain, seperti dalam contoh ini, di mana <name> elemen mengandung dua unsur lainnya (first and last) :
<name><first>Bill</first><last>Gates</last></name>
dan parser akan memecahnya menjadi sub-elemen seperti ini:
<name>
<first>Bill</first>
<last>Gates</last>
</name>
Data Character diurai (PCDATA) adalah istilah yang digunakan tentang data teks yang akan diurai oleh parser XML.
CDATA - (Unparsed) data Karakter
The CDATA istilah digunakan tentang data teks yang tidak diurai oleh parser XML.
Karakter seperti "<" dan "&" adalah ilegal di elemen XML.
"<" Akan menghasilkan error karena parser menafsirkan itu sebagai awal dari elemen baru.
"&" Akan menghasilkan error karena parser menafsirkan itu sebagai awal dari suatu entitas karakter.
Beberapa teks, seperti kode JavaScript, mengandung banyak "<" atau "&" karakter. Untuk menghindari kesalahan kode script dapat didefinisikan sebagai CDATA.
Segala sesuatu di dalam bagian CDATA diabaikan oleh parser.
Bagian CDATA dimulai dengan " <![CDATA[ " and ends with " ]]> " :
<script>
<![CDATA[
function matchwo(a,b)
{
if (a < b && a < 0)
{
return 1;
} else
{
return 0;
}
}
]]>
</script>
Dalam contoh di atas, segala sesuatu di dalam bagian CDATA diabaikan oleh parser.
Notes on CDATA sections:
Sebuah bagian CDATA tidak dapat berisi string "]]>" . bagian bersarang CDATA tidak diperbolehkan.
The "]]>" yang menandai akhir dari bagian CDATA tidak dapat berisi spasi atau baris.