XML DOM Knoten定位
- Vorherige Seite DOM Browser
- Nächste Seite DOM Knoten abrufen
可通过使用节点间的关系对节点进行定位。
Beispiel
下面的例子使用 XML 文件 books.xml。
函数 loadXMLDoc(),位于外部 JavaScript 中,用于加载 XML 文件。
- 获取节点的父节点
- In diesem Beispiel wird das parentNode-Attribut verwendet, um den übergeordneten Knoten eines Knotens zu ermitteln.
- Ersten Unter-knoten eines Knotens ermitteln
- In diesem Beispiel wird die firstChild()-Methode und eine benutzerdefinierte Funktion verwendet, um den ersten Unter-knoten eines Knotens zu ermitteln.
DOM-Knoten lokalisieren
Durch die Beziehungen zwischen Knoten kann auf Knoten im Knotenbaum zugegriffen werden, was oft als Knoten定位 ("navigating nodes") bezeichnet wird.
In XML DOM werden die Beziehungen zwischen Knoten durch Eigenschaften der Knoten definiert:
- parentNode
- childNodes
- firstChild
- lastChild
- nextSibling
- previousSibling
Das folgende Bild zeigt books.xml Ein Teil des Knotenbaums und die Beziehungen zwischen den Knoten wird erläutert:

DOM - Übergeordneter Knoten
Alle Knoten haben nur einen übergeordneten Knoten. Der folgende Code sucht den übergeordneten Knoten von <book> ab:
xmlDoc=loadXMLDoc("books.xml"); x=xmlDoc.getElementsByTagName("book")[0]; document.write(x.parentNode.nodeName);
Beispiel erläutert:
- Durch die Verwendung loadXMLDoc() Geben Sie "books.xmlin xmlDoc "laden
- Ersten <book>-Element ermitteln
- Der Knotenname des übergeordneten Knotens des "x" ausgeben
Leere Textknoten vermeiden
Firefox und einige andere Browser behandeln leere Leerzeichen oder Zeilenumbrüche als Textknoten, während IE dies nicht tut.
Dies kann ein Problem verursachen, wenn folgende Attribute verwendet werden: firstChild, lastChild, nextSibling, previousSibling.
Um zu vermeiden, dass auf leere Textknoten (Leerzeichen und Zeilenumbrüche zwischen Elementknoten) verwiesen wird, wird eine Funktion verwendet, um den Typ des Knotens zu überprüfen:
function get_nextSibling(n) { y=n.nextSibling; while (y.nodeType!=1) { y=y.nextSibling; } return y; }
Mit den obigen Funktionen können wir get_nextSibling(node) anstelle des node.nextSibling-Attributs verwenden.
Codeerklärung:
Der Typ des Elementknotens ist 1. Wenn der同级节点 kein Elementknoten ist, wird zum nächsten Knoten gewechselt, bis ein Elementknoten gefunden wird. Auf diese Weise können in IE und Firefox die gleichen Ergebnisse erreicht werden.
Ersten Element ermitteln
Der folgende Code zeigt den ersten Elementknoten des ersten <book>-Elements an:
<html> <head> <script type="text/javascript" src="loadxmldoc.js"> </script> <script type="text/javascript"> //prüfen, ob der erste Knoten ein Elementknoten ist Funktion get_firstChild(n)} { y=n.firstChild; while (y.nodeType!=1) { y=y.nextSibling; } return y; } </script> </head> <body> <script type="text/javascript"> xmlDoc=loadXMLDoc("books.xml"); x=get_firstChild(xmlDoc.getElementsByTagName("book")[0]); document.write(x.nodeName); </script> </body> </html>
Ausgabe:
title
Beispiel erläutert:
- Durch die Verwendung loadXMLDoc() Geben Sie "books.xmlLaden Sie xmlDoc:
- Verwenden Sie die Funktion get_firstChild auf dem ersten <book>, um den ersten Kindknoten im Elementknoten zu erhalten
- Geben Sie den Namen des ersten Kindknotens (der zu einem Elementknoten gehört) aus
Beispiel
Der folgende Beispiel verwendet ähnliche Funktionen:
- Vorherige Seite DOM Browser
- Nächste Seite DOM Knoten abrufen