SAX Parser - Übersicht

SAX (die einfache API für XML) ist ein ereignisbasierter Parser für XML-Dokumente. Im Gegensatz zu einem DOM-Parser erstellt ein SAX-Parser keinen Analysebaum. SAX ist eine Streaming-Schnittstelle für XML. Dies bedeutet, dass Anwendungen, die SAX verwenden, Ereignisbenachrichtigungen über das zu verarbeitende XML-Dokument erhalten - ein Element und ein Attribut zu einem Zeitpunkt in sequenzieller Reihenfolge, beginnend am Anfang des Dokuments und endend mit dem Schließen von das ROOT-Element.

  • 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 und die Art der Token, auf die der Parser beim Auftreten gestoßen ist.

  • Das Anwendungsprogramm bietet einen "Ereignis" -Handler, der beim Parser registriert werden muss.

  • Wenn die Token identifiziert werden, werden die Rückrufmethoden im Handler mit den relevanten Informationen aufgerufen.

Wann verwenden?

Sie sollten einen SAX-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 viel Speicher belegt. 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 SAX 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.

ContentHandler-Schnittstelle

Diese Schnittstelle gibt die Rückrufmethoden an, mit denen der SAX-Parser ein Anwendungsprogramm über die Komponenten des XML-Dokuments benachrichtigt, die er gesehen hat.

  • void startDocument() - Wird am Anfang eines Dokuments aufgerufen.

  • void endDocument() - Wird am Anfang eines Dokuments aufgerufen.

  • void startElement(String uri, String localName, String qName, Attributes atts) - Wird am Anfang eines Elements aufgerufen.

  • void endElement(String uri, String localName,String qName) - Wird am Ende eines Elements aufgerufen.

  • void characters(char[] ch, int start, int length) - Wird aufgerufen, wenn die Zeichendaten gefunden werden.

  • void ignorableWhitespace( char[] ch, int start, int length) - Wird aufgerufen, wenn eine DTD vorhanden ist und ignorierbare Leerzeichen auftreten.

  • void processingInstruction(String target, String data) - Wird aufgerufen, wenn eine Verarbeitungsanweisung erkannt wird.

  • void setDocumentLocator(Locator locator)) - Bietet einen Locator, mit dem Positionen im Dokument identifiziert werden können.

  • void skippedEntity(String name) - Wird aufgerufen, wenn eine nicht aufgelöste Entität gefunden wird.

  • void startPrefixMapping(String prefix, String uri) - Wird aufgerufen, wenn eine neue Namespace-Zuordnung definiert wird.

  • void endPrefixMapping(String prefix) - Wird aufgerufen, wenn eine Namespace-Definition ihren Gültigkeitsbereich beendet.

Attributs-Schnittstelle

Diese Schnittstelle gibt Methoden zum Verarbeiten der mit einem Element verbundenen Attribute an.

  • int getLength() - Gibt die Anzahl der Attribute zurück.

  • String getQName(int index)

  • String getValue(int index)

  • String getValue(String qname)