Lokalizacja węzłów XML DOM

można zlokalizować węzeł za pomocą relacji między węzłami.

Przykład

Poniższy przykład używa pliku XML books.xml.

funkcja loadXMLDoc()zlokalizowany w zewnętrznym JavaScript, używany do ładowania plików XML.

Uzyskaj rodzica węzła
W tym przykładzie używamy atrybutu parentNode do uzyskania rodzica węzła.
Uzyskaj pierwsze dziecko węzła
W tym przykładzie używamy metody firstChild() i własności customowej funkcji do uzyskania pierwszego dziecka węzła.

Nawigacja po węzłach DOM

Dostęp do węzłów w drzewie węzłów poprzez relacje między nimi, co jest często nazywane nawigowaniem węzłami ("navigating nodes").

W XML DOM relacje między węzłami są zdefiniowane jako atrybuty węzłów:

  • parentNode
  • childNodes
  • firstChild
  • lastChild
  • nextSibling
  • previousSibling

Poniższe obrazy pokazują books.xml Część drzewa węzłów, która pokazuje relacje między węzłami:

Drzewo węzłów DOM

DOM - rodzic

Każdy węzeł ma tylko jednego rodzica. Poniższy kod lokalizuje rodzica <book>:

xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName("book")[0];
document.write(x.parentNode.nodeName);

Przykład wyjaśnienia:

  • Przy użyciu loadXMLDoc() "books.xml" załadowany do xmlDoc
  • Pobierz pierwszy element <book>
  • Wypisz nazwę węzła rodzica "x"

TIY

Unikaj pustych węzłów tekstowych

Firefox oraz niektóre inne przeglądarki traktują puste białe przestrzenie i znaki nowej linii jako węzły tekstowe, podczas gdy IE nie robi tego.

To powoduje problem przy użyciu następujących właściwości: firstChild, lastChild, nextSibling, previousSibling.

Aby uniknąć lokalizacji pustych węzłów tekstowych (spacji i znaków nowej linii między węzłami elementowymi), używamy funkcji do sprawdzania typu węzła:

function get_nextSibling(n)
{
y=n.nextSibling;
while (y.nodeType!=1)
  {
  y=y.nextSibling;
  }
return y;
}

Dzięki powyższej funkcji możemy używać get_nextSibling(node) zamiast właściwości node.nextSibling.

Wyjaśnienie kodu:

Typ węzła elementu to 1. Jeśli węzeł na tym samym poziomie nie jest węzłem elementu, przejdź do następnego węzła, aż znajdziesz węzeł elementu. Dzięki temu w IE i Firefox uzyskasz ten sam wynik.

Pobierz pierwszy element

Poniższy kod pokazuje pierwszy element węzła <book>:

<html>
<head>
<script type="text/javascript" src="loadxmldoc.js">
</script>
<script type="text/javascript">
//sprawdź, czy pierwszy węzeł jest węzłem elementu
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>

Wyjście:

title

Przykład wyjaśnienia:

  • Przy użyciu loadXMLDoc() "books.xml"Wczytaj do xmlDoc"
  • Użyj funkcji get_firstChild na pierwszym <book>, aby uzyskać pierwszy potomek węzła elementu
  • Wyświetlenie nazwy węzła pierwszego potomka (węzła elementu)

TIY

Przykład

Poniższy przykład używa podobnych funkcji:

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