SAX

SAX steht für Simple API for XML und stellt eine (abstrakte) Anwendungsschnittstelle im Kontext von XML dar. Im Gegensatz zu DOM, handelt es sich bei SAX um einen ereignisorientierten Ansatz.

Es wird nicht das gesamte XML-Dokument in den Speicher geladen, sondern es erfolgt eine schrittweise Interpretation. Nach dem Auslösen eines Ereignisses, werden die eben geparsten Daten verworfen. Aufgrund der sequenziellen Abarbeitung sind keine Sprünge und auch kein „Vorauseilen“ auf Daten, die noch nicht geparst wurden, möglich (vgl. Vonhoegen, 2009, S. 393). Der Entwickler ist also darauf angewiesen, die benötigten Informationen für eine Anwendung, zu speichern.

Eine JAVA-API für SAX ist mit JAXP (Java API for XML Processing) verfügbar. Diese ist standardmäßig in der J2SE integriert. Außerdem benötigen Sie einen XML-Parser (zum Beispiel: Apache Xerces), da Java standardmäßig kein XML unterstützt.

Das Prinzip von SAX (im Java-Kontext):

Für jedes mögliche Ereignis existiert eine Methode, die es vom Entwickler zu überschreiben gilt. Im Falle, dass eine Methode für ein bestimmtes Ereignis nicht überschrieben wird, würde das Ereignis von einer Standard-Methode abgearbeitet werden, die aber nicht mit den übergebenen Daten umgehen kann. Dabei kann ein Ereignis jede mögliche „semantische oder syntaktische Konstruktion in einem XML-Dokument“ darstellen. Zum Beispiel ein geöffneter Tag. Dieser wird von der entsprechenden, verantwortlichen Methode bearbeitet (vgl. Ammelburger, 2002, S. 37).

Für ein besseres Verständnis des ereignisbasierenden Konzepts von SAX, sei hier ein Beispiel gegeben (vgl. Projekt-Homepage von SAX: Event vs. Trees, 30.03.2011):

<?xml version="1.0"?> <doc>

<para>Hello, world!</para>

</doc>

Das obige gegebene XML-Dokument wird von SAX in einzelnen Ereignisse wahrgenommen. Folgende Ereignisse treten dabei auf:

start document start element: doc start element: para characters: Hello, world! end element: para end element: doc end document

Vorteil: Geringerer Speicherbedarf erforderlich.

Nachteil: Lediglich lesender Zugriff auf die XML-Daten möglich.

Siehe auch DOM, XML:DB-API, SAX-Projekt-Website

Kategorie: XML, X

Quellen:

  • Projekt-Homepage von SAX. Hier: Events vs. Trees. http://sax.sourceforge.net/event.html (30.03.2011)
  • Ammelburger, Dirk (2002):XML mit Java. Reihe ...in 21 Tagen. München: Markt+Technik. S. 37-38.
  • Vonhoegen, Helmut (2009): Einstieg in XML. Grundlagen, Praxis, Referenz. 5., aktualisierte Auflage. Bonn: Galileo Press. S. 393.