XML DOM Knotenposition
- Previous Page DOM Traverse Nodes
- Next Page DOM Get Node
Knoten können durch die Beziehungen zwischen Knoten lokalisiert werden.
Knotenlokalisierung im DOM
Durch die Beziehungen zwischen Knoten können Knoten im Knotenbaum erreicht werden, was normalerweise als "Knotenlokalisierung" (oder Knotennavigation, navigating nodes) bezeichnet wird.
In XML DOM werden Knotenbeziehungen durch die Attribute der Knoten definiert:
parentNode
childNodes
firstChild
lastChild
nextSibling
previousSibling
Das folgende Diagramm zeigt books.xml zeigt einen Teil des Knotenbaums und erläutert die Beziehungen zwischen Knoten:

DOM - übergeordneter Knoten
Alle Knoten haben nur einen übergeordneten Knoten. Das folgende Code navigiert zum übergeordneten Knoten von <book>:
Beispiel
function myFunction(xml) { var xmlDoc = xml.responseXML; var x = xmlDoc.getElementsByTagName("book")[0]; document.getElementById("demo").innerHTML = x.parentNode.nodeName; }
Beispiel erläutern:
- Verwenden Sie books.xml geladen wird
xmlDoc
in - Erhalten Sie den ersten <book>-Element
- Geben Sie den Knotennamen des übergeordneten Knotens von "x" aus
Vermeiden Sie leere Textknoten
Einige Browser könnten Leerzeichen oder Zeilenumbrüche als Textknoten betrachten. Dies kann Probleme verursachen, wenn die folgenden Eigenschaften verwendet werden:
- firstChild
- lastChild
- nextSibling
- previousSibling
Um zu vermeiden, dass auf leere Textknoten (Leerraum und Zeilenumbrüche zwischen Elementknoten) navigiert wird, verwenden wir eine Funktion, um den Knotentyp zu überprüfen:
function get_nextSibling(n) {}} var y = n.nextSibling; while (y.nodeType != 1) { y = y.nextSibling; } return y; }
Mit der obigen Funktion können wir get_nextSibling(node) anstelle der Eigenschaft node.nextSibling verwenden.
Codeerklärung:
Der Typ des Elementknotens ist 1. Wenn der Knoten auf gleicher Ebene kein Elementknoten ist, bewegen Sie sich zum nächsten Knoten, bis ein Elementknoten gefunden wird.
Erhalten Sie den ersten Kindknoten
Das folgende Code zeigt den ersten Elementknoten des ersten <book>-Elements:
Beispiel
<!DOCTYPE html> <html> <body> <p id="demo"></p> <script> var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { myFunction(this); } }; 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; } // Überprüfen Sie, ob der erste Knoten ein Elementknoten ist function get_firstChild(n) { var y = n.firstChild; while (y.nodeType != 1) { y = y.nextSibling; } return y; } </script> </body> </html>
Beispiel erläutern:
- Verwenden Sie books.xml Laden Sie es in xmlDoc
- Verwenden Sie die Funktion get_firstChild auf dem ersten <book>-Knoten, um den ersten Kindknoten zu erhalten
- Geben Sie den Knotennamen des ersten Kindknotens aus
Mehr Beispiele
- lastChild()
- Verwenden Sie die Methode lastChild() und benutzerdefinierte Funktionen, um den letzten Kindknoten eines Knotens zu erhalten.
- nextSibling()
- Use the nextSibling() method and custom functions to get the next sibling node of an element.
- previousSibling()
- Use the previousSibling() method and custom functions to get the previous sibling node of an element.
- Previous Page DOM Traverse Nodes
- Next Page DOM Get Node