StAX: So parst man XML-Code mit Java

StAX (Streaming API for XML) wurde mit Java 6.0 eingeführt. Die Schnittstelle steht in dem Ruf, SAX (Simple API for XML) und DOM (Document Object Model) überlegen zu sein. ZDNet wirft nachfolgend einen Blick auf die API, erklärt die Funktionsweise und liefert einige Code-Beispiele.

Eine kurze Einführung in StAX

XML-APIs sind traditionell entweder baum- oder ereignisbasiert. Bei baumbasierten APIs wird das gesamte Dokument als Baumstruktur in den Speicher gelesen. Damit hat die bearbeitende Anwendung wahlfreien Zugriff darauf. Bei ereignisbasierten XML-APIs reagiert die Anwendung auf empfangene Ereignisse, sobald sie auf bestimmte Elemente innerhalb des Quelldokuments stößt.

Baumbasierte APIs, etwa DOM, ermöglichen den wahlfreien Zugriff auf das Dokument. Ereignisbasierte APIs, beispielsweise SAX, benötigen jedoch weniger Speicherplatz und arbeiten normalerweise wesentlich schneller.

Diese beiden Zugriffsmethoden stellen also zwei entgegengesetzte Ansätze dar. Eine baumbasierte API gewährt unbegrenzten und wahlfreien Zugriff sowie Manipulationsmöglichkeiten. Die ereignisbasierte API durchläuft das Quelldokument dagegen nur ein einziges Mal.

StAX wurde als eine Art Zwischenstufe zwischen diesen beiden Extrempositionen entwickelt. Bei StAX besteht der programmiertechnische Einstiegspunkt in einem Cursor, der einen Punkt innerhalb des Dokuments repräsentiert. Die Anwendung bewegt diesen Cursor vorwärts, das heißt sie „zieht“ (pull) die Informationen nach Bedarf vom Parser ab. Dies unterscheidet sich von einer ereignisbasierten API, die die Daten eher zur Anwendung „schiebt“ (push). Das setzt voraus, dass sich die Anwendung den Status zwischen den Ereignissen gegebenenfalls merkt. So weiß sie jederzeit, an welcher Stelle innerhalb des Dokuments sie sich gerade befindet.

StAX verwendet ein Pull-Konzept. Folglich fragt der Entwickler Ereignisse ab, anstatt Ereignisinformationen vom XML-Parser automatisch an den Client schicken zu lassen (Push-Ansatz). Das führt letztlich zu einem natürlicheren, lesbareren Programmcode, ohne dass dies zu Lasten der Performance geht. StAX hat seine Wurzeln in einer Reihe inkompatibler Pull-APIs für XML. XMLPULL ist wohl die bekannteste davon.

So funktioniert die StAX-API

Die Kern-API von StAX besteht aus zwei Komponenten: der Event-Iterator-API und der Cursor-API. Anwendungen können diese APIs zum Lesen, Parsen und Schreiben von XML-Dokumenten verwenden.

Die Event-Iterator-API

Die Event-Iterator-API ist SAX sehr ähnlich. Sie hat zwei wichtige Schnittstellen: den XMLEventReader zum Parsen von XML und den XMLEventWriter zum Erzeugen von XML-Code.

Als Beispiel soll folgende einfache XML-Datei dienen:

Page: 1 2 3 4

ZDNet.de Redaktion

Recent Posts

Umfrage: Angestellte in Deutschland unterschätzen NIS-2-Richtlinie

Fast zwei Drittel halten jedoch eine Umsetzung aller Vorgaben von NIS 2 bis Jahresende für…

8 Stunden ago

Kostenloser Dekryptor für ShrinkLocker

Mit dem Dekryptor von Bitdefender können Opfer von Attacken mit der Shrinklocker-Ransomware Dateien wiederherstellen.

22 Stunden ago

Malwarebytes warnt vor Betrugsmaschen beim Weihnachtseinkauf

In der Vorweihnachtszeit ist vor allem Malvertising auf dem Vormarsch. Cyberkriminelle locken Nutzer über schädliche…

22 Stunden ago

Bedrohungsindex: Deutliche Zunahme von Infostealern im Oktober

Dazu trägt unter der Infostealer Lumma-Stealer bei. Hierzulande dominiert der Infostealer Formbook die Malware-Landschaft.

2 Tagen ago

Chrome 131 schließt zwölf Sicherheitslücken

Eine schwerwiegende Anfälligkeit hebelt die Sicherheitsfunktion Seitenisolierung auf. Betroffen sind Chrome für Windows, macOS und…

2 Tagen ago

DeepL Voice mit KI für Sprach- übersetzungen

DeepL Voice ermöglicht Live‑Übersetzung von Meetings und Gesprächen in 13 Sprachen.

2 Tagen ago