Java Script und XML


Einige Grundlagen, um XML-Dateien zu verstehn:
Viele Regeln im umgang mit XML-Datein gibt es nicht der aufbau einer solchen Datei sieht wie folgt aus:

<?xml version 1.0?>
  <schueler nr="23">
    <name>
      Yannick Langer
    </name>
    <klasse>
      TG 11/2
    </klasse>
  </schueler>

Die Erste Zeile dieser XML-Datei wird als Header bezeichnet und enthält die XMLSignatur und XML version. Die inhalte können mittels DOM und Java Script ausgelesen werden.
Um XML-Dateien überhaupt zu verwenden müssen sie geladen werden. Erstmals war das möglich über Microsfts XMLDOM , dabei handelte es ich um eine ActiveX komponente. Dies wurde in DOM über ein Objekt Realisiert.

var xml = new ActiveXObject("Microsoft.XMLDOM");
xml.load("schueler.xml");

Dies Funkioniert jedoch nur mit dem Internet Explorer nicht, für Geckobrowser gibt es auch eine Möglichekiet, das Document-objekt document.implementation darüber wird die Methode createDocument verwendet. Hier ein Syntaxbeispiel:

document.implementation.createDocument(namespace, wurzelknoten ,DOCTYPE)

createDocument() hat noch einige Argumente die hier nicht Relevant sind. Durch die "null" als übergabe argument, wird DOCTYPE ignoriert. Also sähe das obige Beispiel so aus:

var xml = document.implementation.createDocument("","",null);
xml.load(schueler.xml);
xml.onload=parseXML

Über createDocument() wird das Document erzeugt und über load() wird die XML-Datei hochgeladen. Zusätzlich ist das argument async möglich, dabei ist true oder false als eigenschaft möglich bei true gibt der server seinen Response vor dem Antreffen der kompletten Datei zurück bei false wartet der Server bis die Dateien angekommen sind. Danach können wir mittels DOM auf die XML-Datei zugreifen. var root = xml.getElementsByTagName("schueler"); Damit haben wir in der Variable "root" den Wurzelknoten gespeichert. Nun können wir über die childNodes Eigentschft .length die Menge der kindeknoten abfragen. Nun wollen wir einmal nur den Namen auswerten und in einem alert ausgeben.

window.onload = function()
{
    xml = document.implementation.createDocument("","",null);
    xml.async = false;
    xml.onload = parseXML;
    xml.load("schueler.xml");
}
var parseXML = function()
{
    alert(xml.getElementsByTagName('name')[0].firstChild.nodeValue);
}
das Beispiel anzeigen Beispiel 1

Den Ersten Teil der Funktion haben wir schon besprochen. Über xml.onload wird die Funktion parseXML erst nach der Ankunft der Datei gestartet. Danach wird in der funktion über den Dokumentenbaum, die Information mit dem Namen des Schülers ausgewertet.


Valid HTML 4.01 Strict