XML DOM Nodes Lokaliseren
- Previous page DOM browser
- Next page DOM get node
Nodes can be located by using the relationship between nodes.
Example
The following example uses an XML file books.xml.
Function loadXMLDoc(), located in external JavaScript, used to load XML files.
- Obtain the parent node of the node
- In dit voorbeeld wordt de parentNode-eigenschap gebruikt om de ouderknoop van een knoop te verkrijgen.
- Verkrijg de eerste subknoop van een knoop
- In dit voorbeeld wordt de firstChild() methode en een aangepaste functie gebruikt om de eerste subknoop van een knoop te verkrijgen.
Locatie van DOM-knooppunten
Knooppunten in het knooppuntstelsel bereiken via de relaties tussen knopen, vaak genoemd knooppuntlocatie ("navigating nodes").
In de XML DOM worden de relaties tussen knopen gedefinieerd door de eigenschappen van de knopen:
- parentNode
- childNodes
- firstChild
- lastChild
- nextSibling
- previousSibling
De volgende afbeelding toont books.xml Een deel van het knooppuntstelsel en het verklaren van de relaties tussen knopen:

DOM - ouderknoop
Alle knopen hebben slechts één ouderknoop. De volgende code lokaliseert de ouderknoop van <book>:
xmlDoc=loadXMLDoc("books.xml"); x=xmlDoc.getElementsByTagName("book")[0]; document.write(x.parentNode.nodeName);
Example explanation:
- By using loadXMLDoc() Put "books.xml" laden in xmlDoc
- Verkrijg het eerste <book> element
- Geef de naam van de ouderknoop van "x" weer
Voorkom lege tekstknooppunten
Firefox en andere browsers beschouwen lege witruimte of newline als tekstknooppunten, terwijl IE dit niet doet.
Dit veroorzaakt een probleem bij het gebruik van de volgende eigenschappen: firstChild, lastChild, nextSibling, previousSibling.
Om te voorkomen dat we een lege tekstknoop (spaties en newline-symbool tussen elementknooppunten) lokaliseren, gebruiken we een functie om het type van de knoop te controleren:
function get_nextSibling(n) { y=n.nextSibling; while (y.nodeType!=1) { y=y.nextSibling; } return y; }
Met de bovenstaande functie kunnen we get_nextSibling(node) gebruiken in plaats van de node.nextSibling-eigenschap.
Code uitleg:
Het type van de elementknoop is 1. Als de同级knoop geen elementknoop is, verplaats dan naar de volgende knoop totdat een elementknoop wordt gevonden. Op deze manier kan hetzelfde resultaat worden verkregen in IE en Firefox.
Verkrijg de eerste element
De volgende code toont de eerste elementknoop van het eerste <book>:
<html> <head> <script type="text/javascript" src="loadxmldoc.js"> </script> <script type="text/javascript"> //controleer of de eerste knoop een elementknoop is function 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>
Output:
title
Example explanation:
- By using loadXMLDoc() Put "books.xml"Load xmlDoc"
- Use the get_firstChild function on the first <book> to get the first child node within the element node
- Output the node name of the first child node (element node)
Example
The following example uses similar functions:
- Previous page DOM browser
- Next page DOM get node