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
Conseils et Notes

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;
}

Essayer personnellement

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;
}

Essayer personnellement