Samouczek XML

Strona główna XML Wprowadzenie do XML XML Jak używać Drzewo XML Składnia XML Elementy XML Atrybuty XML Przestrzenie nazw XML Wyświetlacz XML Żądanie HTTP XML Parser XML XML DOM XML XPath XML XSLT XML XQuery XML XLink Walidator XML XML DTD Schemat XML Serwer XML Przykłady XML Quiz XML Certyfikat XML

XML AJAX

Wprowadzenie do AJAX AJAX XMLHttp Żądanie AJAX Odpowiedź AJAX Plik XML AJAX AJAX PHP ASP AJAX Baza danych AJAX Aplikacje AJAX Przykłady AJAX

XML DOM

Wprowadzenie do DOM Węzły DOM Dostęp do DOM Informacje o węźle DOM Lista węzłów DOM Przechodzenie DOM Nawigacja DOM DOM Uzyskaj wartości Zmiana węzłów DOM DOM Usuń węzły DOM Zamień węzły DOM Utwórz węzły DOM Dodaj węzły Węzły klonowania DOM Przykłady DOM

Samouczek XPath

Wprowadzenie do XPath Węzły XPath Składnia XPath Osie XPath Operatorzy XPath Przykłady XPath

Samouczek XSLT

Wprowadzenie XSLT Języki XSL Transformacja XSLT XSLT <szablon> XSLT <wartość-z> XSLT <dla każdego> XSLT <sortuj> XSLT <jeśli> XSLT <wybierz> XSLT Zastosuj XSLT na kliencie XSLT na serwerze XSLT Edytuj XML Przykłady XSLT

Samouczek XQuery

Wprowadzenie do XQuery Przykład XQuery XQuery FLWOR XQuery HTML Warunki XQuery Składnia XQuery XQuery Dodaj XQuery Wybierz Funkcje XQuery

XML DTD

Wprowadzenie do DTD Bloki konstrukcyjne DTD Elementy DTD Atrybuty DTD Elementy DTD a Attr Jednostki DTD Przykłady DTD

Schemat XSD

Wprowadzenie do XSD XSD Jak to zrobić XSD <schemat> Elementy XSD Atrybuty XSD Ograniczenia XSD

Kompleks XSD

Elementy XSD XSD Pusty Tylko elementy XSD Tylko tekst XSD Mieszane XSD Wskaźniki XSD XSD <dowolny> XSD <dowolnyAtrybut> Zastąpienie XSD Przykład XSD

Dane XSD

XSD ciąg Data XSD Numeryczne XSD XSD Różne Odniesienie XSD

Usługi internetowe

Usługi XML XML WSDL MYDŁO XML XML RDF XML RSS

Bibliografia

Typy węzłów DOM Węzeł DOM Lista węzłów DOM DOM NamedNodeMap Dokument DOM Element DOM Atrybut DOM Tekst DOM DOM CDATA Komentarz DOM DOM XMLHttpRequest Analizator DOM Elementy XSLT Funkcje XSLT/XPath

XML DOM - Nawigacja w węzłach


Węzły można nawigować za pomocą relacji węzłów.

×

Header


Poruszanie się po węzłach DOM

Dostęp do węzłów w drzewie węzłów za pośrednictwem relacji między węzłami jest często nazywany „węzłami nawigacyjnymi”.

W XML DOM relacje węzłów są zdefiniowane jako właściwości węzłów:

  • rodzicNode
  • childNodes
  • pierworodny
  • ostatnie dziecko
  • następny Rodzeństwo
  • poprzedniRodzeństwo

Poniższy obraz ilustruje część drzewa węzłów i relacje między węzłami w books.xml :

Drzewo węzłów


DOM – węzeł nadrzędny

Wszystkie węzły mają dokładnie jeden węzeł nadrzędny. Poniższy kod prowadzi do węzła nadrzędnego <book>:

Przykład

function myFunction(xml) {
var xmlDoc = xml.responseXML;
    var x = xmlDoc.getElementsByTagName("book")[0];
    document.getElementById("demo").innerHTML = x.parentNode.nodeName;
}

Wyjaśnienie przykładu:

  1. Załaduj " books.xml " do xmlDoc
  2. Pobierz pierwszy element <książka>
  3. Wypisz nazwę węzła nadrzędnego węzła „x”


Unikaj pustych węzłów tekstowych

Firefox i niektóre inne przeglądarki będą traktować puste odstępy lub nowe wiersze jako węzły tekstowe, Internet Explorer nie.

Powoduje to problem podczas korzystania z właściwości: firstChild, lastChild, nextSibling, previousSibling.

Aby uniknąć nawigowania do pustych węzłów tekstowych (spacji i znaków nowej linii między węzłami elementów), używamy funkcji sprawdzającej typ węzła:

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

Powyższa funkcja umożliwia użycie get_nextSibling( node ) zamiast właściwości node .nextSibling.

Wyjaśnienie kodu:

Węzły elementów są typu 1. Jeśli węzeł siostrzany nie jest węzłem elementu, przechodzi do kolejnych węzłów, aż do znalezienia węzła elementu. W ten sposób wynik będzie taki sam w przeglądarce Internet Explorer i Firefox.


Zdobądź pierwszy element potomny

Poniższy kod wyświetla pierwszy węzeł elementu pierwszego <book>:

Przykład

<!DOCTYPE html>
<html>
<body>

<p id="demo"></p>

<script>
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
        myFunction(this);
    }
};
xhttp.open("GET", "books.xml", true);
xhttp.send();

function myFunction(xml) {
    var xmlDoc = xml.responseXML;
    var x = get_firstChild(xmlDoc.getElementsByTagName("book")[0]);
    document.getElementById("demo").innerHTML = x.nodeName;
}

//check if the first node is an element node
function get_firstChild(n) {
    var y = n.firstChild;
    while (y.nodeType != 1) {
        y = y.nextSibling;
    }
    return y;
}
</script>

</body>
</html>

Wyjście:

title

Wyjaśnienie przykładu:

  1. Załaduj " books.xml " do xmlDoc
  2. Użyj funkcji get_firstChild na pierwszym węźle elementu <book>, aby uzyskać pierwszy węzeł podrzędny, który jest węzłem elementu
  3. Wypisz nazwę węzła pierwszego węzła podrzędnego, który jest węzłem elementu

Więcej przykładów


W tym przykładzie użyto metody lastChild() i funkcji niestandardowej, aby uzyskać ostatni węzeł podrzędny węzła


W tym przykładzie zastosowano metodę nextSibling() i funkcję niestandardową, aby uzyskać następny węzeł rodzeństwa węzła


W tym przykładzie zastosowano metodę previousSibling() i funkcję niestandardową w celu pobrania poprzedniego węzła rodzeństwa węzła