Manuel techniqu...login
Manuel technique XML
auteur:php.cn  temps de mise à jour:2022-04-14 15:57:53

XML DOM avancé



XML DOM - Avancé

Dans les chapitres précédents de ce didacticiel, nous avons présenté le XML DOM et utilisé la méthode getElementsByTagName() du XML DOM pour récupérer les données d'un document XML. pour récupérer des données.

Dans ce chapitre, nous combinerons quelques autres méthodes XML DOM importantes.

Vous pouvez en savoir plus sur XML DOM dans notre tutoriel XML DOM .


Récupérer la valeur de l'élément

Le fichier XML utilisé dans l'exemple ci-dessous : books.xml.

L'exemple suivant récupère la valeur texte du premier élément <title> :

Exemple

<!DOCTYPE html>
<html>
<body>
<script>
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.open("GET","books.xml",false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML; 

txt=xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue;
document.write(txt);
</script>
</body>
</html>

Exécuter l'instance»

Cliquez sur le bouton "Exécuter l'instance" pour afficher l'instance en ligne


Obtenir la valeur de l'attribut

Le l'instance suivante récupère la première valeur texte de l'attribut "lang" d'un élément <title> :

Instance

<!DOCTYPE html>
<html>
<body>
<script>
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.open("GET","books.xml",false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML; 

txt=xmlDoc.getElementsByTagName("title")[0].getAttribute("lang");
document.write(txt);
</script>
</body>
</html>

Exécution de l'instance»

Cliquez sur le bouton "Exécuter l'exemple" pour afficher l'exemple en ligne


Modifiez la valeur de l'élément

Le L'exemple suivant modifie la valeur du premier élément <title> Valeur du texte :

Instance

<!DOCTYPE html>
<html>
<body>
<script>
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.open("GET","books.xml",false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML; 

x=xmlDoc.getElementsByTagName("title")[0].childNodes[0];
x.nodeValue="Easy Cooking";
x=xmlDoc.getElementsByTagName("title")[0].childNodes[0];
txt=x.nodeValue;
document.write(txt);
</script>
</body>
</html>

Exécuter l'instance»

Cliquez sur le bouton "Exécuter l'instance" pour afficher l'instance en ligne


Création d'un nouvel attribut

La méthode setAttribute() du DOM XML peut être utilisé pour modifier la valeur de l'attribut existant ou créer un nouvel attribut.

L'exemple suivant crée un nouvel attribut (edition="first") et l'ajoute à chaque élément <book> :

Exemple

<!DOCTYPE html>
<html>
<body>
<script>
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.open("GET","books.xml",false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML; 

x=xmlDoc.getElementsByTagName("book");
for(i=0;i<x.length;i++)
  {
  x[i].setAttribute("edition","first");
  }

//Output all attribute values
for (i=0;i<x.length;i++)
{
document.write("Category: " + x[i].getAttribute('category') + "<br>");
document.write("Edition: " + x[i].getAttribute('edition') + "<br>");
}
</script>
</body>
</html>

Exécuter l'instance»

Cliquez sur le bouton "Exécuter l'instance" pour afficher l'instance en ligne


Création Le createElement( ) méthode de l'élément

XML DOM crée un nouveau nœud d'élément.

La méthode createTextNode() du XML DOM crée un nouveau nœud de texte.

La méthode appendChild() du XML DOM ajoute un nœud enfant à un nœud (après le dernier nœud enfant).

Pour créer un nouvel élément avec du contenu textuel, vous devez créer un nouveau nœud d'élément et un nouveau nœud de texte en même temps, puis l'ajouter au nœud existant.

L'exemple suivant crée un nouvel élément (<edition>) avec le texte suivant : First, puis l'ajoute au premier élément <book>

Instance

<!DOCTYPE html>
<html>
<body>
<script>
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.open("GET","books.xml",false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML; 

newel=xmlDoc.createElement("edition");
newtext=xmlDoc.createTextNode("First");
newel.appendChild(newtext);
x=xmlDoc.getElementsByTagName("book");
x[0].appendChild(newel);

for (i=0;i<x[0].childNodes.length;i++)
{
if (x[0].childNodes[i].nodeType==1)
  { 
  document.write(x[0].childNodes[i].nodeName);
  document.write(": ");
  document.write(x[0].childNodes[i].childNodes[0].nodeValue);
  document.write("<br>");
  }
}
</script>
</body>
</html>

Exécuter l'instance»

Cliquez sur le bouton "Exécuter l'instance" pour afficher l'instance en ligne


Explication de l'instance

  • Créer un élément <edition>

  • Créer un nœud de texte avec la valeur "Premier"

  • Ajoutez ce nœud de texte au nouvel élément <edition>

  • Ajoutez l'élément <edition> au premier élément <book> >

  • Supprimer l'élément

Instance

<!DOCTYPE html>
<html>
<body>
<script>
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.open("GET","books.xml",false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML; 

var x=xmlDoc.getElementsByTagName("book")[0];
document.write("Child nodes before removal: ");
document.write(x.childNodes.length);
x.removeChild(x.childNodes[0]);

document.write("<br>Child nodes after removal: ");
document.write(x.childNodes.length);

</script>
</body>
</html>

Exécuter l'instance»

Cliquez sur "Exécuter l'instance" bouton pour afficher en ligne Exemple

Remarque :
Les résultats de l'exemple ci-dessus peuvent varier en fonction du navigateur utilisé. Firefox traite les caractères de nouvelle ligne comme des nœuds de texte vides, mais pas Internet Explorer. Vous pouvez en savoir plus sur ce problème et comment l'éviter dans notre didacticiel XML DOM.