Dostęp do węzłów DOM XML

Przy użyciu DOM, możesz uzyskać dostęp do każdego węzła w dokumencie XML.

Dostęp do węzłów

Możesz uzyskać dostęp do węzłów na trzy sposoby:

  • Przy użyciu metody getElementsByTagName()
  • Przy użyciu pętli (przeszukiwania) drzewa węzłów
  • Przy użyciu relacji między węzłami nawigacji po drzewie węzłów

Metoda getElementsByTagName()

getElementsByTagName() Zwraca wszystkie elementy o określonym nazwie etykiety.

Gramatyka

node.getElementsByTagName("tagname");

Przykład

Poniższy przykład zwraca wszystkie elementy <title> pod węzłem x:

x.getElementsByTagName("title");

Proszę zauważyć, że powyższy przykład zwraca tylko elementy <title> pod węzłem x. Aby zwrócić wszystkie elementy <title> w dokumencie XML, użyj:

xmlDoc.getElementsByTagName("title");

Tutaj,xmlDoc to sam dokument (węzeł dokumentu).

DOM lista węzłów

getElementsByTagName() Metoda zwraca listę węzłów (node list). Lista węzłów to tablica węzłów.

x = xmlDoc.getElementsByTagName("title");

Możesz uzyskać dostęp do elementu <title> za pomocą indeksu. Aby uzyskać dostęp do trzeciego <title>, możesz napisać:

y = x[2];

Komentarz:Indeksy zaczynają się od 0.

Spróbuj sam

Długość listy węzłów DOM

length Atrybuty do zdefiniowania długości listy węzłów (liczby węzłów).

Możesz użyć length Atrybuty do przechodzenia przez listę węzłów:

Przykład

var x = xmlDoc.getElementsByTagName("title");
for (i = 0; i < x.length; i++) {
  // Możesz napisać kod przetwarzający każdy węzeł tutaj
  }

Spróbuj sam

Typ węzła

Węzły dokumentu XML documentElement Atrybuty to węzeł korzenia.

Atrybuty węzłów to nodeName nazwa węzła.

Atrybuty węzłów to nodeType Atrybuty to typy węzłów.

Dowiedziałeś się więcej o atrybutach węzłów w następnym rozdziale tego przewodnika.

Spróbuj sam

Przechodzenie przez węzły

Poniższy kod przechodzi przez podwęzły węzła korzenia (również węzły elementowe):

Przykład

txt = "";
x = xmlDoc.documentElement.childNodes;
for (i = 0; i < x.length; i++) {
  // Przetwarzaj tylko węzły elementowe (typ 1)
  if (x[i].nodeType == 1) {
    txt += x[i].nodeName + "<br>";
  }
}

Spróbuj sam

Przykład wyjaśnienia:

  1. Załóżmy, że już masz "books.xml" załadować do xmlDoc
  2. Uzyskaj podwęzły elementu korzenia (xmlDoc)
  3. Sprawdzenie typu węzła każdego podwęzła. Jeśli typ węzła jest "1" to węzeł elementowy
  4. Jeśli jest węzłem elementowym, wyświetl nazwę węzła

Nawigacja po relacjach węzłów

Poniższy kod nawiguje po relacjach węzłów w drzewie węzłów, korzystając z tych relacji:

Przykład

x = xmlDoc.getElementsByTagName("book")[0];
xlen = x.childNodes.length;
y = x.firstChild;
txt = "";
for (i = 0; i < xlen; i++) {
  // Tylko przetwarzaj węzły elementowe (typ 1)
  if (y.nodeType == 1) {
    txt += y.nodeName + "<br>";
  }
  y = y.nextSibling;
}

Spróbuj sam

Przykład wyjaśnienia:

  1. Załóżmy, że już masz "books.xml" załadować do xmlDoc
  2. Uzyskaj podwęzły elementu pierwszego 'book'
  3. Ustawienie zmiennej "y" na pierwszy podwózł elementu book
  4. Dla każdego podwęzła (od pierwszego podwęzła "y" (zaczyna się):
  5. Sprawdzenie typu węzła każdego podwęzła. Jeśli typ węzła jest "1" to jest węzeł elementu
  6. Jeśli jest to węzeł elementu, wyświetl nazwę tego węzła
  7. Ustawienie "y"Zmienna y" ustawiana na następny węzeł równorzędnego poziomu, a pętla uruchamiana ponownie