Nodurile pot fi naviga cu ajutorul relațiilor de nod.
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 :
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:
- Load " books.xml " în xmlDoc
- Ia prima <book> elementul
- 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:
- Load " books.xml " în xmlDoc
- Utilizați funcția get_firstChild pe primul <book> nodul elementului pentru a obține primul nod copil , care este un nod element de
- Ieșire numele de nod al primului nod copil, care este un nod element de
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