Derniers tutoriels de développement web
 

XML DOM Traverse Node Arbre


des moyens en boucle à travers ou voyageant à travers l'arbre de noeud Traversant.


Traversant l'Arbre Node

Souvent, vous voulez mettre en boucle un document XML, par exemple: lorsque vous voulez extraire la valeur de chaque élément.

Ceci est appelé "Traversing the node tree"

L'exemple ci-dessous une boucle à travers tous les noeuds de <book> des enfants, et affiche leurs noms et valeurs:

Exemple

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

Sortie:

title: Everyday Italian
author: Giada De Laurentiis
year: 2005
Essayez - le vous - même »

Exemple expliqué:

  1. Charger la chaîne XML en xmlDoc
  2. Obtenez les nœuds enfants de l'élément racine
  3. Pour chaque nœud enfant, sortie le nom du nœud et la valeur de noeud du noeud de texte

Différences de navigateur dans DOM Parsing

Tous les navigateurs modernes prennent en charge la spécification DOM du W3C.

Cependant, il y a des différences entre les navigateurs. Une différence importante est:

  • La façon dont ils gèrent blanc-espaces et de nouvelles lignes

DOM - espaces blancs et de nouvelles lignes

XML contient souvent nouvelle ligne, ou des caractères blancs, entre les nœuds. Ceci est souvent le cas lorsque le document est édité par un simple éditeur comme Notepad.

L'exemple suivant (edited by Notepad) le (new line) (edited by Notepad) - (edited by Notepad) contient CR / LF (new line) entre chaque ligne et deux places devant chaque nœud enfant:

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

Internet Explorer 9 et les versions antérieures ne traitent pas vides blancs-espaces, ou de nouvelles lignes en tant que nœuds de texte, tandis que d'autres navigateurs font.

L'exemple suivant va afficher le nombre de nœuds enfants de l'élément racine (of books.xml ) a. IE9 et antérieures volonté sortie 4 nœuds enfants, tandis que IE10 et versions ultérieures, et d'autres navigateurs affichera 9 nœuds enfants:

Exemple

function myFunction(xml) {
var xmlDoc = xml.responseXML;
    x = xmlDoc.documentElement.childNodes;
    document.getElementById("demo").innerHTML =
    "Number of child nodes: " + x.length;
}
Essayez - le vous - même »

PCDATA - Parsed données de caractère

parseurs XML analysent normalement tout le texte dans un document XML.

Quand un élément XML est analysé, le texte entre les balises XML est également analysé:

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

L'analyseur ne présente parce que les éléments XML peut contenir d' autres éléments, comme dans cet exemple, où le <name> élément contient deux autres éléments (first and last) :

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

et l'analyseur diviser en sous-éléments comme celui-ci:

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

Les données de caractères parsés (PCDATA) est un terme utilisé sur les données de texte qui sera analysé par l'analyseur XML.


CDATA - (Unparsed) Données de Caractère

Le terme CDATA est utilisé sur les données de texte qui ne doit pas être analysé par l'analyseur XML.

Des personnages comme "<" et "&" sont illégales dans des éléments XML.

"<" Va générer une erreur parce que l'analyseur l' interprète comme le début d'un nouvel élément.

"&" Va générer une erreur parce que l'analyseur l' interprète comme le début d'une entité de caractère.

Certains textes, comme le code JavaScript, contient beaucoup de "<" ou "&" caractères. Pour éviter les erreurs de code de script peut être défini comme CDATA.

Tout à l'intérieur d'une section CDATA est ignorée par l'analyseur.

Une section CDATA commence par " <![CDATA[ " and ends with " ]]> " se " <![CDATA[ " and ends with " ]]> " :

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

Dans l'exemple ci-dessus, tout à l'intérieur de la section CDATA est ignorée par l'analyseur.

Notes on CDATA sections:

Une section CDATA ne peut pas contenir la chaîne "]]>" . sections imbriquée CDATA ne sont pas autorisés.

Le "]]>" qui marque la fin de la section CDATA ne peut pas contenir des espaces ou des sauts de ligne.