tutorial pengembangan web terbaru
 

XML DOM Traverse Node Pohon


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:

  1. Memuat string XML menjadi xmlDoc
  2. Dapatkan node anak dari elemen root
  3. 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.