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.