Parser SAX - Panoramica

SAX (l'API semplice per XML) è un parser basato su eventi per documenti xml. A differenza di un parser DOM, un parser SAX non crea alcun albero di analisi. SAX è un'interfaccia di streaming per XML, il che significa che le applicazioni che utilizzano SAX ricevono notifiche di eventi sul documento XML in fase di elaborazione - un elemento e un attributo, alla volta in ordine sequenziale a partire dalla parte superiore del documento e termina con la chiusura di l'elemento ROOT.

  • Legge un documento XML dall'alto verso il basso, riconoscendo i token che compongono un documento XML ben formato.

  • I token vengono elaborati nello stesso ordine in cui appaiono nel documento.

  • Riporta il programma applicativo, la natura dei token che il parser ha riscontrato nel momento in cui si verificano.

  • Il programma applicativo fornisce un gestore di "eventi" che deve essere registrato con il parser.

  • Quando i token vengono identificati, i metodi di callback nel gestore vengono richiamati con le informazioni pertinenti.

Quando usare?

Dovresti usare un parser SAX quando:

  • È possibile elaborare il documento XML in modo lineare dall'alto verso il basso.

  • Il documento non è annidato in profondità.

  • Stai elaborando un documento XML molto grande, il cui albero DOM consumerà molta memoria. Le implementazioni DOM tipiche utilizzano dieci byte di memoria per rappresentare un byte di XML.

  • Il problema da risolvere riguarda solo una parte del documento XML.

  • I dati sono disponibili non appena vengono visti dal parser, quindi SAX funziona bene per un documento XML che arriva su un flusso.

Svantaggi di SAX

  • Non abbiamo accesso casuale a un documento XML poiché viene elaborato in modo forwardonly.

  • Se è necessario tenere traccia dei dati che il parser ha visto o modificare l'ordine degli elementi, è necessario scrivere il codice e memorizzare i dati da soli.

Interfaccia ContentHandler

Questa interfaccia specifica i metodi di callback che il parser SAX utilizza per notificare a un programma applicativo i componenti del documento XML che ha visto.

  • void startDocument() - Chiamato all'inizio di un documento.

  • void endDocument() - Chiamato all'inizio di un documento.

  • void startElement(String uri, String localName, String qName, Attributes atts) - Chiamato all'inizio di un elemento.

  • void endElement(String uri, String localName,String qName) - Chiamato alla fine di un elemento.

  • void characters(char[] ch, int start, int length) - Chiamato quando vengono rilevati i dati del personaggio.

  • void ignorableWhitespace( char[] ch, int start, int length) - Chiamato quando è presente un DTD e vengono rilevati spazi ignorabili.

  • void processingInstruction(String target, String data) - Chiamato quando viene riconosciuta un'istruzione di elaborazione.

  • void setDocumentLocator(Locator locator)) - Fornisce un localizzatore che può essere utilizzato per identificare le posizioni nel documento.

  • void skippedEntity(String name) - Chiamato quando viene rilevata un'entità non risolta.

  • void startPrefixMapping(String prefix, String uri) - Chiamato quando viene definita una nuova mappatura dello spazio dei nomi.

  • void endPrefixMapping(String prefix) - Chiamato quando una definizione dello spazio dei nomi termina il suo ambito.

Interfaccia attributi

Questa interfaccia specifica i metodi per elaborare gli attributi collegati a un elemento.

  • int getLength() - Restituisce il numero di attributi.

  • String getQName(int index)

  • String getValue(int index)

  • String getValue(String qname)