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 -Traverse-Knotenbaum


Traversieren bedeutet Durchschleifen oder Überqueren des Knotenbaums.


Durchqueren des Knotenbaums

Oft möchten Sie ein XML-Dokument durchlaufen, zum Beispiel: wenn Sie den Wert jedes Elements extrahieren möchten.

Dies wird als "Traversieren des Knotenbaums" bezeichnet.

Das folgende Beispiel durchläuft alle untergeordneten Knoten von <book> und zeigt ihre Namen und Werte an:

Beispiel

<!DOCTYPE html>
<html>
<body>

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

<script>
var x, i ,xmlDoc;
var txt = "";
var text = "<book>" +
"<title>Everyday Italian</title>" +
"<author>Giada De Laurentiis</author>" +
"<year>2005</year>" +
"</book>";

parser = new DOMParser();
xmlDoc = parser.parseFromString(text,"text/xml");

// documentElement always represents the root node
x = xmlDoc.documentElement.childNodes;
for (i = 0; i < x.length ;i++) {
    txt += x[i].nodeName + ": " + x[i].childNodes[0].nodeValue + "<br>";
}
document.getElementById("demo").innerHTML = txt;
</script>

</body>
</html>

Ausgabe:

title: Everyday Italian
author: Giada De Laurentiis
year: 2005

Beispiel erklärt:

  1. Laden Sie die XML-Zeichenfolge in xmlDoc
  2. Rufen Sie die untergeordneten Knoten des Stammelements ab
  3. Geben Sie für jeden untergeordneten Knoten den Knotennamen und den Knotenwert des Textknotens aus


Browser-Unterschiede beim DOM-Parsing

Alle modernen Browser unterstützen die W3C-DOM-Spezifikation.

Es gibt jedoch einige Unterschiede zwischen den Browsern. Ein wichtiger Unterschied ist:

  • Die Art und Weise, wie sie mit Leerzeichen und neuen Zeilen umgehen

DOM - Leerzeichen und neue Zeilen

XML enthält oft neue Zeilen oder Leerzeichen zwischen Knoten. Dies ist häufig der Fall, wenn das Dokument mit einem einfachen Editor wie Notepad bearbeitet wird.

Das folgende Beispiel (bearbeitet von Notepad) enthält CR/LF (neue Zeile) zwischen jeder Zeile und zwei Leerzeichen vor jedem untergeordneten Knoten:

<book>
  <title>Everyday Italian</title>
  <author>Giada De Laurentiis</author>
  <year>2005</year>
  <price>30.00</price>
</book>

Internet Explorer 9 und früher behandeln leere Leerzeichen oder neue Zeilen NICHT als Textknoten, während andere Browser dies tun.

Das folgende Beispiel gibt die Anzahl der untergeordneten Knoten aus, die das Stammelement (von books.xml ) hat. IE9 und früher geben 4 untergeordnete Knoten aus, während IE10 und spätere Versionen und andere Browser 9 untergeordnete Knoten ausgeben:

Beispiel

function myFunction(xml) {
var xmlDoc = xml.responseXML;
    x = xmlDoc.documentElement.childNodes;
    document.getElementById("demo").innerHTML =
    "Number of child nodes: " + x.length;
}

PCDATA - Geparste Zeichendaten

XML-Parser analysieren normalerweise den gesamten Text in einem XML-Dokument.

Wenn ein XML-Element geparst wird, wird auch der Text zwischen den XML-Tags geparst:

<message>This text is also parsed</message>

Der Parser tut dies, weil XML-Elemente andere Elemente enthalten können, wie in diesem Beispiel, wo das <name>-Element zwei andere Elemente enthält (erstes und letztes):

<name><first>Bill</first><last>Gates</last></name>

und der Parser wird es wie folgt in Unterelemente aufteilen:

<name>
  <first>Bill</first>
  <last>Gates</last>
</name>

Geparste Zeichendaten (PCDATA) ist ein Begriff, der für Textdaten verwendet wird, die vom XML-Parser geparst werden.


CDATA - (Unparsed) Zeichendaten

Der Begriff CDATA wird für Textdaten verwendet, die nicht vom XML-Parser analysiert werden sollen.

Zeichen wie „<“ und „&“ sind in XML-Elementen unzulässig.

„<“ erzeugt einen Fehler, weil der Parser es als Beginn eines neuen Elements interpretiert.

"&" erzeugt einen Fehler, da der Parser es als Beginn einer Zeichenentität interpretiert.

Einige Texte, wie JavaScript-Code, enthalten viele „<“- oder „&“-Zeichen. Um Fehler zu vermeiden, kann Skriptcode als CDATA definiert werden.

Alles innerhalb eines CDATA-Abschnitts wird vom Parser ignoriert.

Ein CDATA-Abschnitt beginnt mit " <![CDATA[ " und endet mit " ]]> ":

<script>
<![CDATA[
function matchwo(a,b) {
    if (a < b && a < 0) {
        return 1;
    } else {
        return 0;
    }
}
]]>
</script>

Im obigen Beispiel wird alles innerhalb des CDATA-Abschnitts vom Parser ignoriert.

Hinweise zu CDATA-Abschnitten:

Ein CDATA-Abschnitt darf nicht die Zeichenfolge "]]>" enthalten. Verschachtelte CDATA-Abschnitte sind nicht zulässig.

Das „]]>“, das das Ende des CDATA-Abschnitts markiert, darf keine Leerzeichen oder Zeilenumbrüche enthalten.