XML DOM - Zugreifende Knoten
Mit dem DOM können Sie auf jeden Knoten in einem XML-Dokument zugreifen.
Probieren Sie es selbst aus - Beispiele
Die folgenden Beispiele verwenden die XML-Datei books.xml .
verwenden. Verwenden Sie die Methode getElementsByTagName(), um das dritte <title>-Element in "books.xml" zu erhalten.
Verwenden Sie die length-Eigenschaft, um alle <title>-Elemente in „books.xml“ zu durchlaufen.
Verwenden Sie die nodeType-Eigenschaft, um den Knotentyp des Stammelements in „books.xml“ abzurufen.
Verwenden Sie die nodeType-Eigenschaft, um nur Elementknoten in „books.xml“ zu verarbeiten.
durchlaufen Verwenden Sie die Eigenschaft nodeType und die Eigenschaft nextSibling, um Elementknoten in "books.xml" zu verarbeiten.
Zugriff auf Knoten
Sie können auf drei Arten auf einen Knoten zugreifen:
1. Durch die Verwendung der Methode getElementsByTagName()
2. Durch Durchschleifen (Traversieren) des Knotenbaums.
3. Durch Navigieren im Knotenbaum unter Verwendung der Knotenbeziehungen.
Die Methode getElementsByTagName()
getElementsByTagName() gibt alle Elemente mit einem angegebenen Tag-Namen zurück.
Syntax
node.getElementsByTagName("tagname");
Beispiel
Das folgende Beispiel gibt alle <title>-Elemente unter dem x-Element zurück:
x.getElementsByTagName("title");
Beachten Sie, dass das obige Beispiel nur <title>-Elemente unter dem x-Knoten zurückgibt. Um alle <title>-Elemente im XML-Dokument zurückzugeben, verwenden Sie:
xmlDoc.getElementsByTagName("title");
wobei xmlDoc das Dokument selbst ist (Dokumentknoten).
DOM-Knotenliste
Die Methode getElementsByTagName() gibt eine Knotenliste zurück. Eine Knotenliste ist ein Array von Knoten.
x = xmlDoc.getElementsByTagName("title");
Auf die <title>-Elemente in x kann über die Indexnummer zugegriffen werden. Um auf den dritten <Titel> zuzugreifen, können Sie Folgendes schreiben:
y = x[2];
Hinweis: Der Index beginnt bei 0.
In einem späteren Kapitel dieses Tutorials erfahren Sie mehr über Knotenlisten.
Länge der DOM-Knotenliste
Die length-Eigenschaft definiert die Länge einer Knotenliste (die Anzahl der Knoten).
Sie können eine Knotenliste durchlaufen, indem Sie die Eigenschaft length verwenden:
Beispiel
var
x = xmlDoc.getElementsByTagName("title");
for (i = 0; i <x.length; i++) {
//
do something for each node
}
Knotentypen
Die Eigenschaft documentElement des XML-Dokuments ist der Stammknoten.
Die nodeName- Eigenschaft eines Knotens ist der Name des Knotens.
Die Eigenschaft nodeType eines Knotens ist der Typ des Knotens.
Im nächsten Kapitel dieses Tutorials erfahren Sie mehr über die Knoteneigenschaften.
Knoten durchlaufen
Der folgende Code durchläuft die untergeordneten Knoten, die auch Elementknoten sind, des Stammknotens:
Beispiel
txt = "";
x = xmlDoc.documentElement.childNodes;
for (i = 0; i <x.length; i++)
{
// Process only element nodes (type 1)
if (x[i].nodeType == 1) {
txt += x[i].nodeName + "<br>";
}
}
Beispiel erklärt:
- Angenommen, Sie haben „ books.xml “ in xmlDoc geladen
- Abrufen der untergeordneten Knoten des Stammelements (xmlDoc)
- Überprüfen Sie für jeden untergeordneten Knoten den Knotentyp. Wenn der Knotentyp "1" ist, handelt es sich um einen Elementknoten
- Geben Sie den Namen des Knotens aus, wenn es sich um einen Elementknoten handelt
Navigieren in Knotenbeziehungen
Der folgende Code navigiert durch die Knotenstruktur mithilfe der Knotenbeziehungen:
Beispiel
x = xmlDoc.getElementsByTagName("book")[0];
xlen = x.childNodes.length;
y = x.firstChild;
txt = "";
for (i = 0; i <xlen; i++)
{
// Process only element nodes (type 1)
if (y.nodeType == 1) {
txt += y.nodeName + "<br>";
}
y = y.nextSibling;
}
Beispiel erklärt:
- Angenommen, Sie haben „ books.xml “ in xmlDoc geladen
- Rufen Sie die untergeordneten Knoten des ersten Buchelements ab
- Legen Sie die Variable "y" als ersten untergeordneten Knoten des ersten Buchelements fest
- Für jeden untergeordneten Knoten (beginnend mit dem ersten untergeordneten Knoten "y"):
- Überprüfen Sie den Knotentyp. Wenn der Knotentyp "1" ist, handelt es sich um einen Elementknoten
- Geben Sie den Namen des Knotens aus, wenn es sich um einen Elementknoten handelt
- Legen Sie die Variable "y" als nächsten Geschwisterknoten fest und durchlaufen Sie die Schleife erneut