Ultimele tutoriale de dezvoltare web
 

XML DOM Traverse Nod copac


Traversarea prin mijloace looping sau strabateau copac nod.


Traversarea Tree Node

De multe ori doriți să procesați un document XML, de exemplu: atunci când doriți să extrageți valoarea fiecărui element.

Aceasta se numește "Traversing the node tree"

Exemplul de mai jos bucle prin toate nodurile copil de <carte>, și afișează numele și valorile lor:

Exemplu

<!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>

ieşire:

title: Everyday Italian
author: Giada De Laurentiis
year: 2005
Încearcă - l singur »

Exemplu explicat:

  1. Încărcați șirul XML în xmlDoc
  2. Ia-nodurile copil ale elementului rădăcină
  3. Pentru fiecare nod copil, de ieșire numele nodului și valoarea nod al nodului de text

Diferențele în browser DOM Parsarea

Toate browserele moderne suporta specificația W3C DOM.

Cu toate acestea, există unele diferențe între browsere. O diferență importantă este:

  • Modul în care acestea se ocupe spațiile albe și noi linii

DOM - Spații albe și noi linii

XML conține adesea linie nouă, sau de caractere spațiu alb, între noduri. Acesta este adesea cazul când documentul este editat de un editor simplu ca Notepad.

Exemplul următor (edited by Notepad) conține CR / LF (new line) între fiecare linie și două spații în fața fiecărui nod copil:

<book>
  <title>Everyday Italian</title>
  <author>Giada De Laurentiis</author>
  <year>2005</year>
  <price>30.00</price>
</book>

Internet Explorer 9 și versiunile anterioare nu tratează spațiile albe goale, sau noi linii de text ca noduri, în timp ce alte browsere.

Următorul exemplu va ieșire numărul de copii noduri elementul rădăcină (of books.xml ) are. IE9 și versiunile anterioare de ieșire 4 voință noduri copil, în timp ce IE10 și versiuni ulterioare, și alte browsere vor ieșire 9 noduri copii:

Exemplu

function myFunction(xml) {
var xmlDoc = xml.responseXML;
    x = xmlDoc.documentElement.childNodes;
    document.getElementById("demo").innerHTML =
    "Number of child nodes: " + x.length;
}
Încearcă - l singur »

PCDATA - Parsed Caracter Date

interpretoare XML analiza în mod normal, tot textul dintr-un document XML.

Atunci când un element XML este analizat, textul dintre tag-urile XML este de asemenea analizat:

<message>This text is also parsed</message>

Parserul face acest lucru , deoarece elementele XML pot conține alte elemente, ca în acest exemplu, în cazul în care <name> elementul conține alte două elemente (first and last) :

<name><first>Bill</first><last>Gates</last></name>

și parserul se va rupe în sus, în sub-elemente, cum ar fi acest lucru:

<name>
  <first>Bill</first>
  <last>Gates</last>
</name>

Date caracter parsate (PCDATA) este un termen utilizat de date cu privire la textul care va fi analizat de către parser XML.


CDATA - (Unparsed) Data Character

CDATA Termenul este folosit cu privire la date de tip text, care nu ar trebui să fie analizat de către parser XML.

Caractere cum ar fi "<" și "&" sunt ilegale în elemente XML.

"<" Va genera o eroare , deoarece parserul le interpretează ca începutul unui nou element.

"&" Va genera o eroare , deoarece parserul le interpretează ca începutul unei entități caracter.

Unele text, cum ar fi codul JavaScript, conține o mulțime de "<" sau "&" de caractere. Pentru a evita erorile de cod de script poate fi definit ca CDATA.

Totul în interiorul unei secțiuni CDATA este ignorată de parser.

O secțiune CDATA începe cu " <![CDATA[ " and ends with " ]]> " :

<script>
<![CDATA[
function matchwo(a,b) {
    if (a < b && a < 0) {
        return 1;
    } else {
        return 0;
    }
}
]]>
</script>

In exemplul de mai sus, totul în interiorul secțiunii CDATA este ignorată de parser.

Notes on CDATA sections:

O secțiune CDATA nu poate conține șirul "]]>" . secțiuni imbricate CDATA nu sunt permise.

"]]>" , Care marchează sfârșitul secțiunii CDATA nu pot conține spații sau sfârșituri de linie.