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) 
