Przejazd środkami przelotowego lub podróżowanie po drzewie węzłów.
Ruch Drzewo Node
Często chcesz pętli dokumentu XML, na przykład: gdy chcemy wyodrębnić wartość każdego elementu.
To się nazywa "Traversing the node tree"
Poniższy przykład pętle za pośrednictwem wszystkich węzłów potomnych <book> i wyświetla ich nazwy i wartości:
Przykład
<!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>
Wydajność:
title: Everyday Italian
author: Giada De Laurentiis
year: 2005
Spróbuj sam " Przykład wyjaśnił:
- Załaduj ciąg XML do xmldoc
- Uzyskaj węzły podrzędne elementu głównego
- Dla każdego węzła potomnego, wyjście nazwy węzła i wartością węzła węzła tekstowego
Różnice Browser w DOM parsowania
Wszystkie nowoczesne przeglądarki obsługują specyfikację W3C DOM.
Istnieją jednak pewne różnice między przeglądarkami. Jedną ważną różnicą jest to:
- Sposób, w jaki radzą sobie biało-przestrzenie i nowe linie
DOM - spacji i nowych linii
XML często zawiera nową linię lub białe znaki, pomiędzy węzłami. Jest to często miejsce w przypadku, gdy dokument jest edytowany za pomocą prostego edytora jak Notatnik.
Poniższy przykład (edited by Notepad) zawiera CR / LF (new line) między poszczególnymi wierszami i dwoma miejscami z przodu każdego węzła potomnego:
<book>
<title>Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
Internet Explorer 9 i wcześniejszych Nie traktuj pustych biało-przestrzenie, czy nowe linie jak węzły tekstowe, podczas gdy inne przeglądarki robić.
Poniższy przykład wyświetli liczbę węzłów dziecko element główny (of books.xml ) ma. IE9 i wcześniejsze wyjście wola 4 węzły potomne, a IE10 i nowsze wersje, a inne przeglądarki wyjście będzie 9 węzłów potomnych:
Przykład
function myFunction(xml) {
var xmlDoc = xml.responseXML;
x =
xmlDoc.documentElement.childNodes;
document.getElementById("demo").innerHTML =
"Number
of child nodes: " + x.length;
}
Spróbuj sam " PCDATA - analizowany postaci danych
parser XML normalnie zanalizować cały tekst w dokumencie XML.
Gdy element XML jest analizowany tekst pomiędzy znacznikami XML jest również analizowane:
<message>This text is also parsed</message>
Parser ma tego powodu elementy XML mogą zawierać inne elementy, jak w tym przykładzie, gdzie <name> element zawiera dwa inne elementy (first and last) :
<name><first>Bill</first><last>Gates</last></name>
a parser złamie go na pod-elementów, takich jak ten:
<name>
<first>Bill</first>
<last>Gates</last>
</name>
Przeanalizowane dane znakowe (PCDATA) jest terminem używanym na temat danych tekstowych, które będą przetwarzane przez parser XML.
CDATA - (Unparsed) Dane znakowe
Termin CDATA jest używany o danych tekstowych, które nie powinny być analizowane przez parser XML.
Postacie takie jak "<" i "&" są nielegalne w elementach XML.
"<" Wygeneruje błąd, ponieważ parser interpretuje ją jako początek nowego elementu.
"&" Wygeneruje błąd, ponieważ parser interpretuje ją jako początek podmiotu znaków.
Część tekstu, podobnie jak kod JavaScript, zawiera dużo "<" lub "&" znaków. Aby uniknąć błędów kod skryptu można zdefiniować jako CDATA.
Wszystko wewnątrz sekcji CDATA jest ignorowane przez parser.
Sekcja CDATA zaczyna się od " <![CDATA[ " and ends with " ]]> " :
<script>
<![CDATA[
function matchwo(a,b)
{
if (a < b && a < 0)
{
return 1;
} else
{
return 0;
}
}
]]>
</script>
W powyższym przykładzie, wszystko wewnątrz sekcji CDATA jest ignorowane przez parser.
Notes on CDATA sections:
Sekcja CDATA nie może zawierać napis "]]>" . zagnieżdżone sekcje CDATA nie są akceptowane.
"]]>" , Która oznacza koniec sekcji CDATA nie może zawierać spacji ani podziałów wierszy.