XML DOM - Toegang tot knooppunten
Met de DOM hebt u toegang tot elk knooppunt in een XML-document.
Probeer het zelf - Voorbeelden
De onderstaande voorbeelden gebruiken het XML-bestand books.xml .
Gebruik de methode getElementsByTagName() om het derde <title>-element in "books.xml" te krijgen
Gebruik de eigenschap length om alle <title>-elementen in "books.xml" te doorlopen
Gebruik de eigenschap nodeType om het knooppunttype van het hoofdelement in "books.xml" op te halen.
Gebruik de eigenschap nodeType om alleen elementknooppunten in "books.xml" te verwerken.
Gebruik de eigenschap nodeType en de eigenschap nextSibling om elementknooppunten in "books.xml" te verwerken.
Toegang tot knooppunten
U kunt op drie manieren toegang krijgen tot een knooppunt:
1. Door de methode getElementsByTagName() te gebruiken
2. Door de knooppuntenboom te doorlopen (door te lopen).
3. Door door de knooppuntenboom te navigeren, gebruikmakend van de knooppuntrelaties.
De methode getElementsByTagName()
getElementsByTagName() retourneert alle elementen met een opgegeven tagnaam.
Syntaxis
node.getElementsByTagName("tagname");
Voorbeeld
Het volgende voorbeeld retourneert alle <title>-elementen onder het x-element:
x.getElementsByTagName("title");
Merk op dat het bovenstaande voorbeeld alleen <title>-elementen retourneert onder het x-knooppunt. Gebruik om alle <title>-elementen in het XML-document te retourneren:
xmlDoc.getElementsByTagName("title");
waarbij xmlDoc het document zelf is (documentknooppunt).
Lijst met DOM-knooppunten
De methode getElementsByTagName() retourneert een lijst met knooppunten. Een knooppuntenlijst is een array van knooppunten.
x = xmlDoc.getElementsByTagName("title");
De <title>-elementen in x zijn toegankelijk via indexnummer. Om toegang te krijgen tot de derde <title> kun je schrijven::
y = x[2];
Opmerking: de index begint bij 0.
In een later hoofdstuk van deze zelfstudie leert u meer over knooppuntlijsten.
Lengte DOM-knooppuntlijst
De eigenschap length definieert de lengte van een lijst met knooppunten (het aantal knooppunten).
U kunt door een lijst met knooppunten lopen met behulp van de eigenschap length:
Voorbeeld
var
x = xmlDoc.getElementsByTagName("title");
for (i = 0; i <x.length; i++) {
//
do something for each node
}
Knooppunttypen
De eigenschap documentElement van het XML-document is het hoofdknooppunt.
De eigenschap nodeName van een node is de naam van de node.
De eigenschap nodeType van een knooppunt is het type van het knooppunt.
In het volgende hoofdstuk van deze tutorial leer je meer over de node-eigenschappen.
Doorkruisende knooppunten
De volgende code loopt door de onderliggende knooppunten, die ook elementknooppunten zijn, van het hoofdknooppunt:
Voorbeeld
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>";
}
}
Voorbeeld uitgelegd:
- Stel dat u " books.xml " heeft geladen in xmlDoc
- De onderliggende knooppunten van het hoofdelement ophalen (xmlDoc)
- Controleer voor elk onderliggend knooppunt het type knooppunt. Als het knooppunttype "1" is, is het een elementknooppunt
- Voer de naam van het knooppunt uit als het een elementknooppunt is
Navigeren in knooprelaties
De volgende code navigeert door de knooppuntstructuur met behulp van de knooppuntrelaties:
Voorbeeld
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;
}
Voorbeeld uitgelegd:
- Stel dat u " books.xml "in xmlDoc . hebt geladen
- De onderliggende knooppunten van het eerste boekelement ophalen
- Stel de variabele "y" in als het eerste onderliggende knooppunt van het eerste boekelement
- Voor elke onderliggende node (beginnend met de eerste onderliggende node "y"):
- Controleer het knooppunttype. Als het knooppunttype "1" is, is het een elementknooppunt
- Voer de naam van het knooppunt uit als het een elementknooppunt is
- Stel de variabele "y" in als het volgende knooppunt van de broer of zus en doorloop de lus opnieuw