XML -Tutorial

XML-HOME XML-Einführung XML-Wie zu verwenden XML-Baum XML-Syntax XML-Elemente XML-Attribute XML-Namespaces XML-Anzeige XML-HttpRequest XML-Parser XML-DOM XML-XPath XML-XSLT XML-XQuery XML-XLink XML-Validierer XML-DTD XML-Schema XML-Server XML-Beispiele XML-Quiz XML-Zertifikat

XML-AJAX

AJAX-Einführung AJAX-XMLHttp AJAX-Anfrage AJAX-Antwort AJAX-XML-Datei AJAX-PHP AJAX ASP AJAX-Datenbank AJAX-Anwendungen AJAX-Beispiele

XML-DOM

DOM-Einführung DOM-Knoten DOM-Zugriff DOM-Knoten-Info DOM-Knotenliste DOM-Traversierung DOM-Navigation DOM Get-Werte DOM-Änderungsknoten DOM-Knoten entfernen DOM-Ersetzungsknoten DOM-Knoten erstellen DOM-Knoten hinzufügen DOM-Klonknoten DOM-Beispiele

XPath -Tutorial

XPath-Einführung XPath-Knoten XPath-Syntax XPath-Achsen XPath-Operatoren XPath-Beispiele

XSLT -Tutorial

XSLT-Einführung XSL-Sprachen XSLT-Transformation XSLT <Vorlage> XSLT <Wert von> XSLT <für-jeden> XSLT <sortieren> XSLT <wenn> XSLT <auswählen> XSLT anwenden XSLT auf dem Client XSLT auf dem Server XSLT XML bearbeiten XSLT-Beispiele

XQuery- Tutorial

XQuery-Einführung XQuery-Beispiel XQuery FLWOR XQuery-HTML XQuery-Bedingungen XQuery-Syntax XQuery hinzufügen XQuery-Auswahl XQuery-Funktionen

XML -DTD

DTD-Einführung DTD-Bausteine DTD-Elemente DTD-Attribute DTD-Elemente vs. Attr DTD-Entitäten DTD-Beispiele

XSD- Schema

XSD-Einführung XSD-Anleitung XSD <Schema> XSD-Elemente XSD-Attribute XSD-Einschränkungen

XSD- Komplex

XSD-Elemente XSD leer Nur XSD-Elemente Nur XSD-Text XSD gemischt XSD-Indikatoren XSD <beliebig> XSD <beliebiges Attribut> XSD-Ersetzung XSD-Beispiel

XSD -Daten

XSD-String XSD-Datum XSD Numerisch XSD Sonstiges XSD-Referenz

Webdienste _

XML-Dienste XML-WSDL XML-SOAP XML-RDF XML-RSS

Verweise

DOM-Knotentypen DOM-Knoten DOM-Knotenliste DOM NamedNodeMap DOM-Dokument DOM-Element DOM-Attribut DOM-Text DOM-CDATA DOM-Kommentar DOM-XMLHttpRequest DOM-Parser XSLT-Elemente XSLT/XPath-Funktionen

XML DOM - Navigationsknoten


Knoten können mithilfe von Knotenbeziehungen navigiert werden.

×

Header


Navigieren in DOM-Knoten

Der Zugriff auf Knoten im Knotenbaum über die Beziehung zwischen Knoten wird oft als "Navigationsknoten" bezeichnet.

Im XML-DOM werden Knotenbeziehungen als Eigenschaften zu den Knoten definiert:

  • Elternknoten
  • untergeordnete Knoten
  • erstes Kind
  • letztes Kind
  • nächstesGeschwister
  • vorherigeGeschwister

Das folgende Bild veranschaulicht einen Teil der Knotenstruktur und die Beziehung zwischen Knoten in books.xml :

Knotenbaum


DOM - Übergeordneter Knoten

Alle Knoten haben genau einen Elternknoten. Der folgende Code navigiert zum übergeordneten Knoten von <book>:

Beispiel

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

Beispiel erklärt:

  1. Laden Sie „ books.xml “ in xmlDoc
  2. Rufen Sie das erste <book>-Element ab
  3. Ausgabe des Knotennamens des Elternknotens von "x"


Vermeiden Sie leere Textknoten

Firefox und einige andere Browser behandeln leere Leerzeichen oder neue Zeilen als Textknoten, Internet Explorer nicht.

Dies verursacht ein Problem bei der Verwendung der Eigenschaften: firstChild, lastChild, nextSibling, previousSibling.

Um das Navigieren zu leeren Textknoten (Leerzeichen und Zeilenumbruchzeichen zwischen Elementknoten) zu vermeiden, verwenden wir eine Funktion, die den Knotentyp überprüft:

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

Die obige Funktion ermöglicht es Ihnen, get_nextSibling( node ) anstelle der Eigenschaft node .nextSibling zu verwenden.

Code erklärt:

Elementknoten sind vom Typ 1. Wenn der Geschwisterknoten kein Elementknoten ist, bewegt er sich zu den nächsten Knoten, bis ein Elementknoten gefunden wird. Auf diese Weise ist das Ergebnis in Internet Explorer und Firefox gleich.


Holen Sie sich das erste untergeordnete Element

Der folgende Code zeigt den ersten Elementknoten des ersten <book> an:

Beispiel

<!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>

Ausgabe:

title

Beispiel erklärt:

  1. Laden Sie „ books.xml “ in xmlDoc
  2. Verwenden Sie die get_firstChild-Funktion für den ersten <book>-Elementknoten, um den ersten untergeordneten Knoten abzurufen, der ein Elementknoten ist
  3. Ausgabe des Knotennamens des ersten untergeordneten Knotens, der ein Elementknoten ist

Mehr Beispiele


Dieses Beispiel verwendet die lastChild()-Methode und eine benutzerdefinierte Funktion, um den letzten untergeordneten Knoten eines Knotens abzurufen


Dieses Beispiel verwendet die Methode nextSibling() und eine benutzerdefinierte Funktion, um den nächsten gleichgeordneten Knoten eines Knotens abzurufen


Dieses Beispiel verwendet die Methode previousSibling() und eine benutzerdefinierte Funktion, um den vorherigen gleichgeordneten Knoten eines Knotens abzurufen