XML DOM - Dostęp do węzłów
Dzięki DOM możesz uzyskać dostęp do każdego węzła w dokumencie XML.
Spróbuj sam - przykłady
Poniższe przykłady wykorzystują plik XML books.xml .
Użyj metody getElementsByTagName(), aby uzyskać trzeci element <title> w „books.xml”
Użyj właściwości length, aby przejść przez wszystkie elementy <title> w „books.xml”
Użyj właściwości nodeType, aby uzyskać typ węzła elementu głównego w "books.xml".
Użyj właściwości nodeType, aby przetwarzać tylko węzły elementów w „books.xml”.
Użyj właściwości nodeType i nextSibling do przetwarzania węzłów elementów w „books.xml”.
Dostęp do węzłów
Możesz uzyskać dostęp do węzła na trzy sposoby:
1. Korzystając z metody getElementsByTagName()
2. Przechodząc przez (przechodząc) przez drzewo węzłów.
3. Nawigując po drzewie węzłów, korzystając z relacji węzłów.
Metoda getElementsByTagName()
getElementsByTagName() zwraca wszystkie elementy o określonej nazwie znacznika.
Składnia
node.getElementsByTagName("tagname");
Przykład
Poniższy przykład zwraca wszystkie elementy <title> pod elementem x:
x.getElementsByTagName("title");
Zauważ, że powyższy przykład zwraca tylko elementy <title> w węźle x. Aby zwrócić wszystkie elementy <title> w dokumencie XML użyj:
xmlDoc.getElementsByTagName("title");
gdzie xmlDoc to sam dokument (węzeł dokumentu).
Lista węzłów DOM
Metoda getElementsByTagName() zwraca listę węzłów. Lista węzłów to tablica węzłów.
x = xmlDoc.getElementsByTagName("title");
Dostęp do elementów <title> w x można uzyskać za pomocą numeru indeksu. Aby uzyskać dostęp do trzeciego <tytułu>, możesz napisać::
y = x[2];
Uwaga: indeks zaczyna się od 0.
Więcej o listach węzłów dowiesz się w kolejnym rozdziale tego samouczka.
Długość listy węzłów DOM
Właściwość length określa długość listy węzłów (liczbę węzłów).
Listę węzłów można przeglądać w pętli, korzystając z właściwości length:
Przykład
var
x = xmlDoc.getElementsByTagName("title");
for (i = 0; i <x.length; i++) {
//
do something for each node
}
Typy węzłów
Właściwość documentElement dokumentu XML jest węzłem głównym.
Właściwość nodeName węzła jest nazwą węzła.
Właściwość nodeType węzła jest typem węzła.
Więcej o właściwościach węzła dowiesz się w następnym rozdziale tego samouczka.
Przemierzanie węzłów
Poniższa pętla kodu przechodzi przez węzły podrzędne, które są również węzłami elementów węzła głównego:
Przykład
txt = "";
x = xmlDoc.documentElement.childNodes;
for (i = 0; i <x.length; i++)
{
// Process only element nodes (type 1)
if (x[i].nodeType == 1) {
txt += x[i].nodeName + "<br>";
}
}
Przykład wyjaśniony:
- Załóżmy, że załadowałeś " books.xml " do xmlDoc
- Pobierz węzły podrzędne elementu głównego (xmlDoc)
- Dla każdego węzła podrzędnego sprawdź typ węzła. Jeśli typ węzła to „1”, jest to węzeł elementu
- Wypisz nazwę węzła, jeśli jest to węzeł elementu
Nawigowanie po relacjach węzłów
Poniższy kod nawiguje po drzewie węzłów przy użyciu relacji węzłów:
Przykład
x = xmlDoc.getElementsByTagName("book")[0];
xlen = x.childNodes.length;
y = x.firstChild;
txt = "";
for (i = 0; i <xlen; i++)
{
// Process only element nodes (type 1)
if (y.nodeType == 1) {
txt += y.nodeName + "<br>";
}
y = y.nextSibling;
}
Przykład wyjaśniony:
- Załóżmy, że załadowałeś " books.xml " do xmlDoc
- Pobierz węzły podrzędne pierwszego elementu książki
- Ustaw zmienną "y" jako pierwszy węzeł potomny pierwszego elementu książki
- Dla każdego węzła podrzędnego (zaczynając od pierwszego węzła podrzędnego „y”):
- Sprawdź typ węzła. Jeśli typ węzła to „1”, jest to węzeł elementu
- Wypisz nazwę węzła, jeśli jest to węzeł elementu
- Ustaw zmienną „y” jako następny węzeł rodzeństwa i ponownie uruchom pętlę