Attraversamento mezzi looping attraverso o che viaggiano attraverso l'albero dei nodi.
Attraversando l'albero dei nodi
Spesso si desidera ciclo un documento XML, ad esempio: quando si desidera estrarre il valore di ogni elemento.
Questo è chiamato "Traversing the node tree"
L'esempio che segue scorre tutti i nodi figli di <libro> e visualizza i loro nomi e valori:
Esempio
<!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>
Produzione:
title: Everyday Italian
author: Giada De Laurentiis
year: 2005
Prova tu stesso " Esempio spiegato:
- Caricare la stringa XML in xmlDoc
- Ottenere i nodi figli dell'elemento radice
- Per ogni nodo figlio, in uscita il nome del nodo e il valore del nodo del nodo di testo
Le differenze del browser in DOM di analisi
Tutti i browser moderni supportano la specifica W3C DOM.
Tuttavia, ci sono alcune differenze tra i browser. Una differenza importante è:
- Il modo in cui gestiscono bianchi-spazi e nuove linee
DOM - spazi bianchi e Nuove linee
XML spesso contiene nuova linea, o spazi vuoti, tra i nodi. Questo è spesso il caso in cui il documento è a cura di un semplice editor come Notepad.
Il seguente esempio (edited by Notepad) contiene CR / LF (new line) tra una riga e due posti di fronte a ogni nodo figlio:
<book>
<title>Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
Internet Explorer 9 e precedenti non trattare vuoti bianchi-spazi, o nuove linee come nodi di testo, mentre altri browser fanno.
Il seguente esempio in uscita il numero di nodi figlio dell'elemento radice (of books.xml ) ha. IE9 e precedenti volontà di uscita 4 nodi figlio, mentre IE10 e versioni successive, e altri browser sarà in uscita 9 nodi figlio:
Esempio
function myFunction(xml) {
var xmlDoc = xml.responseXML;
x =
xmlDoc.documentElement.childNodes;
document.getElementById("demo").innerHTML =
"Number
of child nodes: " + x.length;
}
Prova tu stesso " PCDATA - analizzati carattere dati
parser XML normalmente analizzare tutto il testo in un documento XML.
Quando un elemento XML viene analizzato, il testo tra i tag XML viene anche analizzato:
<message>This text is also parsed</message>
Il parser fa questo perché gli elementi XML può contenere altri elementi, come in questo esempio, dove il <name> elemento contiene altri due elementi (first and last) :
<name><first>Bill</first><last>Gates</last></name>
e il parser suddividerlo in sotto-elementi come questo:
<name>
<first>Bill</first>
<last>Gates</last>
</name>
I dati di carattere parsed (PCDATA) è un termine usato per i dati di testo che verrà analizzato dal parser XML.
CDATA - (Unparsed) dati di caratteri
Il termine è usato CDATA su dati di testo che non deve essere analizzato dal parser XML.
Personaggi come "<" e "&" sono illegali in elementi XML.
"<" Genererà un errore perché il parser interpreta come l'inizio di un nuovo elemento.
"&" Genererà un errore perché il parser lo interpreta come l'inizio di una entità carattere.
Alcuni di testo, come il codice JavaScript, contiene un sacco di "<" o "&" caratteri. Per evitare errori di codice di script possono essere definiti come CDATA.
Tutto all'interno di una sezione CDATA viene ignorato dal parser.
Una sezione CDATA inizia con " <![CDATA[ " and ends with " ]]> " :
<script>
<![CDATA[
function matchwo(a,b)
{
if (a < b && a < 0)
{
return 1;
} else
{
return 0;
}
}
]]>
</script>
Nell'esempio di cui sopra, tutto all'interno della sezione CDATA viene ignorato dal parser.
Notes on CDATA sections:
Una sezione CDATA non può contenere la stringa "]]>" . sezioni nidificati CDATA non sono ammessi.
Il "]]>" , che segna la fine della sezione CDATA non può contenere spazi o interruzioni di riga.