- StAX
-
Streaming API for XML (StAX) ist ein Application Programming Interface (API), um XML-Dateien aus Java zu verarbeiten.
Traditionellerweise sind XML-APIs:
- baumbasiert – das gesamte Dokument wird als Baumstruktur in den Speicher gelesen und kann von dort direkt zugegriffen werden.
- ereignisbasiert – die Anwendung bekommt ein Ereignis, wenn neue Entities im Dokument entdeckt werden.
Beide Varianten haben Vorteile: die erste (z. B. DOM) erlaubt wahlfreien Zugriff auf das Dokument, die zweite (z. B. SAX) benötigt weniger Speicher und ist schneller.
Diese zwei Verfahren sind das genaue Gegenteil voneinander. Eine baumbasierte API erlaubt unbegrenzten, direkten Zugriff und Änderung, während eine ereignisbasierte API ein einmaliger Durchlauf durch das Quelldokument ist.
StAX wurde als ein Mittelweg zwischen diesen beiden Gegensätzen entworfen. In der StAX-Metapher ist der programmatische Einstieg ein Cursor, der eine Stelle im Dokument repräsentiert. Die Anwendung bewegt den Cursor vorwärts, sie holt also die benötigte Information genau dann vom Parser, wenn sie benötigt wird. Dies unterscheidet sich von einer ereignisbasierten API, wie SAX, die die Daten aktiv in die Anwendung schickt und somit die Anwendung zur Verwaltung von Zustandsinformationen zwischen Ereignissen zwingt, um darin die aktuelle Position im Dokument festzuhalten.
Ursprünge
StAX hat seine Wurzeln in einer ganzen Reihe von ereignisgetriebenen Programmierschnittstellen, in erster Linie „XMLPULL“, dessen Autoren (Stefan Haustein und Aleksandr Slominski) unter anderem mit BEA, Oracle, Sun Microsystems, Breeze Factor und James Clark zusammen arbeiteten.
Weblinks
- JSR-173 – StAX (englisch)
- Introduction to StAX on xml.com (englisch)
- XMLPull.org (englisch)
- Performance-Papier von Sun Microsystems, Inc., Stand 2005-08 (PDF, englisch)
Wikimedia Foundation.