XML DOM locate node
- Forrige side DOM browser
- Næste side DOM få node
Kan定位节点通过使用节点间的关系。
Eksempel
Nedenstående eksempel bruger XML-filer books.xml.
Funktion loadXMLDoc()Ligger i ekstern JavaScript, bruges til at indlæse XML-filer.
- Få forældrenode til en node
- Dette eksempel bruger parentNode-egenskaben til at få adgang til nodens forældernode.
- Få den første undernode af en node
- Dette eksempel bruger firstChild() metoden og en brugerdefineret funktion til at få adgang til den første undernode af en node.
Naviger DOM-noder
Gennem forholdet mellem noder kan man få adgang til noder i nodetreet, hvilket normalt kaldes "noder navigation" ("navigating nodes").
I XML DOM defineres forholdet mellem noder som egenskaberne for noderne:
- parentNode
- childNodes
- firstChild
- lastChild
- nextSibling
- previousSibling
Følgende billede viser books.xml En del af et nodetræ og beskriver forholdet mellem noderne:

DOM - forældernode
Alle noder har kun én forældernode. Følgende kode lokaliserer forældernoden til <book>:
xmlDoc=loadXMLDoc("books.xml"); x=xmlDoc.getElementsByTagName("book")[0]; document.write(x.parentNode.nodeName);
Eksempel forklaring:
- Ved hjælp af loadXMLDoc() "books.xml" indlæst til xmlDoc
- Få den første <book>-element
- Udskriv "x"'s forældernodes navn
Undgå tomme tekstnodes
Firefox og andre browsere betragter tomme mellemrum og linjeskift som tekstnodes, mens IE gør det ikke.
Dette kan føre til et problem ved brug af følgende egenskaber: firstChild, lastChild, nextSibling, previousSibling.
For at undgå at定位到空的 tekstnode(mellem elementnodes, mellem mellemrum og linjeskiftsymboler),bruger vi en funktion til at kontrollere nodens type:
function get_nextSibling(n) { y=n.nextSibling; while (y.nodeType!=1) { y=y.nextSibling; } return y; }
Med de ovenstående funktioner kan vi bruge get_nextSibling(node) i stedet for node.nextSibling-egenskaben.
Kodeforklaring:
Elementnodens type er 1. Hvis den sidestillede node ikke er en elementnode, bevæges der til den næste node, indtil en elementnode findes. På denne måde kan samme resultat opnås i både IE og Firefox.
Få den første elementen
Følgende kode viser den første <book>-elementsnode:
<html> <head> <script type="text/javascript" src="loadxmldoc.js"> </script> <script type="text/javascript"> //tjek om den første node er en elementnode 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
Eksempel forklaring:
- Ved hjælp af loadXMLDoc() "books.xml"Indlæs i xmlDoc"
- Brug get_firstChild-funktionen på den første <book> for at få den første barnnode i elementnoden
- Output første barnnodes (der tilhører elementnode) nodenavn
Eksempel
Følgende eksempel bruger lignende funktioner:
- Forrige side DOM browser
- Næste side DOM få node