XML DOM locate 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 node tree

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

TIY

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

TIY

Eksempel

Følgende eksempel bruger lignende funktioner:

  • firstChild: TIY
  • lastChild: TIY
  • nextSibling: TIY
  • previousSibling: TIY