StAX Parser - Übersicht

StAX ist eine JAVA-basierte API zum Parsen von XML-Dokumenten auf ähnliche Weise wie der SAX-Parser. Es gibt jedoch zwei Hauptunterschiede zwischen den beiden APIs:

  • StAX ist eine PULL-API, während SAX eine PUSH-API ist. Dies bedeutet, dass im Fall eines StAX-Parsers die Clientanwendung den StAX-Parser auffordern muss, Informationen aus XML abzurufen, wann immer dies erforderlich ist. Im Fall des SAX-Parsers muss die Clientanwendung jedoch Informationen abrufen, wenn der SAX-Parser die Clientanwendung über diese Informationen informiert ist verfügbar.

  • Die StAX-API kann XML-Dokumente lesen und schreiben. Mit der SAX-API kann XML nur gelesen werden.

Im Folgenden sind die Funktionen der StAX-API aufgeführt:

  • Liest ein XML-Dokument von oben nach unten und erkennt die Token, aus denen ein wohlgeformtes XML-Dokument besteht.

  • Token werden in derselben Reihenfolge verarbeitet, in der sie im Dokument angezeigt werden.

  • Meldet das Anwendungsprogramm über die Art der Token, auf die der Parser beim Auftreten gestoßen ist.

  • Das Anwendungsprogramm bietet einen "Ereignis" -Leser, der als Iterator fungiert und das Ereignis durchläuft, um die erforderlichen Informationen zu erhalten. Ein weiterer verfügbarer Reader ist der "Cursor" -Leser, der als Zeiger auf XML-Knoten fungiert.

  • Sobald die Ereignisse identifiziert sind, können XML-Elemente aus dem Ereignisobjekt abgerufen und weiterverarbeitet werden.

Wann verwenden?

Sie sollten einen StAX-Parser verwenden, wenn -

  • Sie können das XML-Dokument linear von oben nach unten verarbeiten.

  • Das Dokument ist nicht tief verschachtelt.

  • Sie verarbeiten ein sehr großes XML-Dokument, dessen DOM-Baum zu viel Speicher benötigt. Typische DOM-Implementierungen verwenden zehn Byte Speicher, um ein Byte XML darzustellen.

  • Das zu lösende Problem betrifft nur einen Teil des XML-Dokuments.

  • Daten sind verfügbar, sobald sie vom Parser angezeigt werden. Daher funktioniert StAX gut für ein XML-Dokument, das über einen Stream eingeht.

Nachteile von SAX

  • Wir haben keinen zufälligen Zugriff auf ein XML-Dokument, da es nur vorwärts weitergeleitet wird.

  • Wenn Sie die vom Parser gesehenen Daten verfolgen oder die Reihenfolge der Elemente ändern müssen, müssen Sie den Code schreiben und die Daten selbst speichern.

XMLEventReader-Klasse

Diese Klasse stellt den Iterator von Ereignissen bereit, mit denen Ereignisse beim Parsen des XML-Dokuments durchlaufen werden können

  • StartElement asStartElement() - Dient zum Abrufen von Werten und Attributen des Elements.

  • EndElement asEndElement() - Wird am Ende eines Elements aufgerufen.

  • Characters asCharacters() - Kann verwendet werden, um Zeichen wie CDATA, Leerzeichen usw. abzurufen.

XMLEventWriter-Klasse

Diese Schnittstelle gibt Methoden zum Erstellen eines Ereignisses an.

  • add(Event event) - Fügt ein Ereignis mit Elementen zu XML hinzu.

XMLStreamReader-Klasse

Diese Klasse bietet einen Iterator für Ereignisse, mit dem Ereignisse beim Parsen des XML-Dokuments durchlaufen werden können

  • int next() - Wird verwendet, um das nächste Ereignis abzurufen.

  • boolean hasNext() - Wird verwendet, um zu überprüfen, ob weitere Ereignisse vorhanden sind oder nicht

  • String getText() - Wird verwendet, um den Text eines Elements abzurufen

  • String getLocalName() - Wird verwendet, um den Namen eines Elements abzurufen

XMLStreamWriter-Klasse

Diese Schnittstelle gibt Methoden zum Erstellen eines Ereignisses an.

  • writeStartElement(String localName) - Fügt ein Startelement eines bestimmten Namens hinzu.

  • writeEndElement(String localName) - Fügt ein Endelement eines bestimmten Namens hinzu.

  • writeAttribute(String localName, String value) - Schreibt ein Attribut in ein Element.