Accès aux nœuds XML DOM

Grâce au DOM, vous pouvez accéder à chaque nœud du document XML.

Exemple

L'exemple suivant utilise un fichier XML books.xml.

Fonction loadXMLDoc()se trouve à l'extérieur du JavaScript, utilisé pour charger les fichiers XML.

Accéder aux nœuds en utilisant l'index du tableau de nœuds
Dans cet exemple, la méthode getElementsByTagname() est utilisée pour obtenir le troisième élément <title> dans "books.xml".
Circuler les nœuds en utilisant l'attribut length
Dans cet exemple, l'attribut length est utilisé pour circuler tous les éléments <title> dans "books.xml".
Vérifier le type de nœud de l'élément
Dans cet exemple, l'attribut nodeType est utilisé pour obtenir le type de nœud de l'élément racine dans "books.xml".
Circuler les nœuds d'élément
Dans cet exemple, l'attribut nodeType est utilisé pour traiter les nœuds d'élément dans "books.xml".
Par les relations de nœuds, circuler les nœuds d'élément
Dans cet exemple, les attributs nodeType et nextSibling sont utilisés pour traiter les nœuds d'élément dans "books.xml".

Accéder aux nœuds

Vous pouvez accéder aux nœuds de trois manières :

  1. en utilisant la méthode getElementsByTagName()
  2. par le biais de la navigation dans l'arbre de nœuds
  3. en utilisant les relations entre les nœuds pour naviguer dans l'arbre de nœuds

Méthode getElementsByTagName()

getElementsByTagName() renvoie tous les éléments portant le nom de balise spécifié.

grammaire

node.getElementsByTagName("tagname");

Exemple

L'exemple suivant retourne tous les éléments <title> sous x :

x.getElementsByTagName("title");

Veuillez noter que l'exemple ci-dessus ne retourne que les éléments <title> sous x. Pour retourner tous les éléments <title> du document XML, utilisez :

xmlDoc.getElementsByTagName("title");

Ici, xmlDoc est le document lui-même (nœud de document).

Liste de nœuds DOM

La méthode getElementsByTagName() retourne une liste de nœuds (liste de nœuds). La liste de nœuds est un tableau de nœuds.

Le code suivant utilise loadXMLDoc() Définissez "books.xml"Charger xmlDoc dans, puis stocker une liste de nœuds <title> dans la variable x :

xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName("title");

Vous pouvez accéder aux éléments <title> dans x via un index. Pour accéder au troisième <title>, vous pouvez écrire :

y=x[2];

TIY

Remarque :Les indices commencent à 0.

Vous apprendrez plus sur les listes de nœuds dans les chapitres ultérieurs de ce tutoriel.

Longueur de la liste de nœuds DOM

La propriété length définit la longueur de la liste de nœuds (c'est-à-dire le nombre de nœuds).

Vous pouvez itérer sur une liste de nœuds en utilisant la propriété length :

xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName("title");
for (i=0;i<x.length;i++)
  { 
  document.write(x[i].childNodes[0].nodeValue);
  document.write("<br />");
  }

Exemple d'explication :

  1. Utilisez loadXMLDoc() Définissez "books.xml"Charger xmlDoc
  2. Obtenez tous les éléments <title>
  3. Sortie de la valeur du noeud texte de chaque élément <title>

TIY

Type de noeud

Le document XML de documentElement L'attribut est le noeud racine.

Les attributs du noeud sont nodeName Le nom du noeud est

Les attributs du noeud sont nodeType Les attributs sont le type du noeud.

Vous apprendrez plus sur les attributs des nœuds dans la section suivante de ce tutoriel.

TIY

Parcourir les nœuds

Le code suivant itère sur les sous-nœuds de l'élément racine, qui sont également des nœuds élémentaires :

xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.documentElement.childNodes;
for (i=0;i<x.length;i++)
{ 
  if (x[i].nodeType==1)
  {//Traiter uniquement les noeuds élémentaires (type 1) 
  document.write(x[i].nodeName);
  document.write("<br />");
  } 
}

Exemple d'explication :

  1. En utilisant loadXMLDoc() Définissez "books.xml"Charger dans xmlDoc"
  2. Obtenez les sous-nœuds de l'élément racine
  3. Vérifiez le type de noeud de chaque sous-nœud. Si le type de noeud est "1", il s'agit d'un noeud élémentaire
  4. Si le noeud est un noeud élément, affichez le nom du noeud

TIY

Naviguer en utilisant les relations de noeuds

Le code suivant navigue dans l'arbre de noeuds en utilisant les relations de noeuds :

xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName("book")[0].childNodes;
y=xmlDoc.getElementsByTagName("book")[0].firstChild;
for (i=0;i<x.length;i++)
{
if (y.nodeType==1)
  {//Traiter uniquement les noeuds élémentaires (type 1)
  document.write(y.nodeName + "<br />");
  }
y=y.nextSibling;
}
  1. En utilisant loadXMLDoc() Définissez "books.xml"Charger dans xmlDoc"
  2. Obtenez le premier enfant de l'élément "book"
  3. Définissez la variable "y" comme le premier enfant du premier élément "book"
  4. Vérifiez le type de noeud de chaque noeud enfant, si le type de noeud est "1", c'est un noeud élément
  5. Si le noeud est un noeud élément, affichez le nom du noeud
  6. Définissez la variable "y" comme le prochain noeud frère et exécutez à nouveau la boucle

TIY