Propriété nextSibling du XML DOM
Définition et utilisation
nextSibling
Cette propriété renvoie le nœud suivant immédiatement après un nœud (le prochain nœud au même niveau dans l'arbre).
Si aucun tel nœud n'existe, cette propriété renvoie null.
Syntaxe
nodeObject.nextSibling
Remarque :Firefox et la plupart des autres navigateurs considèrent les espaces ou les retours chariots comme des nœuds texte, tandis que Internet Explorer ne le fait pas. Par conséquent, dans l'exemple suivant, nous utilisons une fonction pour vérifier le type de nœud du prochain frère.
Le nodeType de l'élément est 1, par conséquent, si le prochain frère n'est pas un nœud élémentaire, il se déplace au prochain nœud et vérifie si ce nœud est un nœud élémentaire. Cela continuera jusqu'à ce qu'il trouve le prochain nœud frère de même niveau (doit être un nœud élémentaire). De cette manière, le résultat est correct dans tous les navigateurs.
Astuce :Pour en savoir plus sur les différences entre les navigateurs, veuillez consulter la section DOM navigateur du tutoriel XML DOM.
Exemple
Exemple 1
Le code suivant charge "books.xml" dans xmlDoc et obtient le noeud frère suivant du premier élément <title> :
var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { myFunction(this); } }; xhttp.open("GET", "books.xml", true); xhttp.send(); // Vérification du noeud frère suivant s'il s'agit d'un noeud élément function get_nextsibling(n) { var x = n.nextSibling; while (x.nodeType != 1) { x = x.nextSibling; } return x; } function myFunction(xml) { var xmlDoc = xml.responseXML; var x = xmlDoc.getElementsByTagName("title")[0]; var y = get_nextsibling(x); document.getElementById("demo").innerHTML = x.nodeName + " = " + x.childNodes[0].nodeValue + "<br>Frère suivant : " + y.nodeName + " = " + y.childNodes[0].nodeValue; }
Exemple 2
Obtenir le noeud frère précédent :
var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { myFunction(this); } }; xhttp.open("GET", "books.xml", true); xhttp.send(); // Vérification du noeud frère précédent s'il s'agit d'un noeud élément function get_previoussibling(n) { var x = n.previousSibling; while (x.nodeType != 1) { x = x.previousSibling; } return x; } function myFunction(xml) { var xmlDoc = xml.responseXML; var x = xmlDoc.getElementsByTagName("author")[0]; var y = get_previoussibling(x); document.getElementById("demo").innerHTML = x.nodeName + " = " + x.childNodes[0].nodeValue + "Précédent frère : " + y.nodeName + " = " + y.childNodes[0].nodeValue; }