Ultimele tutoriale de dezvoltare web
 

XML DOM - Navigarea Nodurile


Nodurile pot fi naviga cu ajutorul relațiilor de nod.

×

Antet


Navigarea DOM Nodurile

Accesarea nodurilor din arborele de nod prin relația dintre noduri, este adesea numit "navigating nodes" de "navigating nodes" .

In XML DOM, relațiile de nod sunt definite ca proprietăți la nodurile:

  • parentNode
  • childNodes
  • firstChild
  • lastChild
  • nextSibling
  • previousSibling

Următoarea imagine ilustrează o parte a arborelui nodului și relația dintre nodurile din books.xml :

copac Nod


DOM - Nod părinte

Toate nodurile au exact un nod părinte. Codul de mai jos navighează la nodul părinte al <book> :

Exemplu

function myFunction(xml) {
var xmlDoc = xml.responseXML;
    var x = xmlDoc.getElementsByTagName("book")[0];
    document.getElementById("demo").innerHTML = x.parentNode.nodeName;
}
Încearcă - l singur »

Exemplu explicat:

  1. Load " books.xml " în xmlDoc
  2. Ia prima <book> elementul
  3. Ieșire numele de nod al nodului părinte al "x"

Evitați Nodurile text gol

Firefox și unele alte browsere, va trata spațiile albe goale sau noi linii ca noduri de text, Internet Explorer nu va.

Acest lucru provoacă o problemă atunci când se utilizează proprietățile: firstChild, lastChild, nextSibling, previousSibling.

Pentru a evita navigarea la nodurile text gol (spații și noua linie de caractere între nodurile elementului), vom folosi o funcție care verifică tipul de nod:

function get_nextSibling(n) {
    var y = n.nextSibling;
    while (y.nodeType! = 1) {
        y = y.nextSibling;
    }
    return y;
}

Funcția de mai sus vă permite să utilizați get_nextSibling( node ) în loc de proprietate node .nextSibling.

Cod explicat:

noduri element sunt de tip 1. În cazul în care nodul frate nu este un nod element se va trece la următoarele noduri, până când se găsește un nod de element. În acest fel, rezultatul va fi același în ambele Internet Explorer și Firefox.


Ia Element primul copil

Codul de mai jos afișează primul nod element al primului <book> :

Exemplu

<!DOCTYPE html>
<html>
<body>

<p id="demo"></p>

<script>
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (xhttp.readyState == 4 && xhttp.status == 200) {
myFunction(xhttp);
}
};
xhttp.open("GET", "books.xml", true);
xhttp.send();

function myFunction(xml) {
    var xmlDoc = xml.responseXML;
    var x = get_firstChild(xmlDoc.getElementsByTagName("book")[0]);
    document.getElementById("demo").innerHTML = x.nodeName;
}

//check if the first node is an element node
function get_firstChild(n) {
    var y = n.firstChild;
    while (y.nodeType != 1) {
        y = y.nextSibling;
    }
    return y;
}
</script>

</body>
</html>

ieşire:

title
Încearcă - l singur »

Exemplu explicat:

  1. Load " books.xml " în xmlDoc
  2. Utilizați funcția get_firstChild pe primul <book> nodul elementului pentru a obține primul nod copil , care este un nod element de
  3. Ieșire numele de nod al primului nod copil, care este un nod element de

Exemple

Mai multe exemple

lastChild()
Acest exemplu utilizează lastChild() metoda și o funcție personalizată pentru a obține ultimul nod copil al unui nod

nextSibling()
Acest exemplu utilizează nextSibling() metoda și o funcție personalizată pentru a obține următorul nod frate al unui nod

previousSibling()
Acest exemplu utilizează previousSibling() metoda și o funcție personalizată pentru a obține nodul anterior frate al unui nod