Le tecnologie per analizzare i dati racchiusi in un file XML sono essenzialmente due: SAX (Simple API for XML, http://www.megginson.com/SAX) e DOM (Document Object Model, http://www.w3c.org).
SAX è l’interfaccia standard per il parsing XML basato su eventi, sviluppato in collaborazione dai membri della mailing list XML-DEV, attualmente presentato da OASIS. SAX 2.0 è stato rilasciato Venerdì 5 Maggio 2000, ed è di pubblico dominio sia per uso commerciale che non.
SAX2 è la nuova versione di SAX con nuove caratteristiche quali il supporto contenuto per Namespaces , per filtri incatenati, e per l’interrogazione ed il settaggio delle caratteristiche e delle proprietà nel parser.
Il DOM è un’interfaccia neutrale che permette ai programmi e agli script di accedere dinamicamente ai documenti. Tale interfaccia permette di aggiornare il contenuto, la struttura e lo stile dei documenti.
Le differenze tra i due sono sostanzialmente riferite alle modalità di interazione tra le API (Application Programming Interface) e l’applicazione che ne fa uso. L’architettura SAX si basa su una sorta di cooperazione fra parser e applicazione al fine di rappresentare il documento nella maniera più consona ad un problema specifico. In termini pratici, durante l’analisi, l’applicazione riceve dal parser SAX degli eventi opportuni che descrivono il riconoscimento di un particolare elemento del documento; in questo modo l’applicativo può eventualmente scartare quelle informazioni alle quali non è interessato, rendendo l’operazione molto più veloce e meno onerosa in termini di occupazioni di risorse. Nel caso DOM, al contrario, l’applicazione ha a disposizione direttamente una descrizione ad albero dell’intero documento in oggetto.
Un parser SAX funziona in un modo molto semplice: legge, carattere dopo carattere, tutto il documento XML dato in input e genera una serie di eventi (callback) ogni volta che riconosce la presenza di particolari informazioni. Tali informazioni sono solo notificate ai vari handler che poi le utilizzeranno nel modo opportuno.
La sequenzialità con cui opera un parser SAX, dovendo rileggere più volte il documento, rende però dispendioso l’utilizzo delle risorse e di tempo. Per ovviare a tale problema è stato sviluppato il parser DOM.
Il DOM, a differenza di SAX, è una specifica del W3C (come XML) e le versioni si indicano per livelli. Per ogni elemento all’interno del documento XML, è prevista la definizione di un’interfaccia.
Il DOM permette di disporre - in memoria - la totalità delle informazioni contenute nel documento XML e di un meccanismo per elaborarle. Conservare in memoria tutte le informazioni è molto vantaggioso nel caso di modifica dei dati estrapolati; ciò sarebbe ancora più evidente nel caso in cui la modifica di alcune informazioni dipendesse dalla loro globalità.
In caso della mancata validità del documento, il parser si interromperà e visualizzerà un messaggio d’errore.
Ma anche il parser DOM ha i suoi svantaggi, concernenti l’uso della memoria, specie quando i file XML esaminati hanno dimensioni di alcuni MB.
Questo significa che il parser da utilizzare dipende da vari fattori che vanno valutati caso per caso. E’ consigliabile usare dei parser SAX in caso di documenti XML:
Ø di grandi dimensioni;
Ø non soggetti a modifiche;
Ø sui quali si devono eseguire operazioni di conteggio (o simili).
I parser DOM, invece, sono consigliati in caso di documenti XML:
Ø strutturati in modo complesso;
Ø di dimensioni ridotte;
Ø soggetti a modifiche;
Ø la cui elaborazione dipende dalle informazioni contenute in tutto il documento.
Comunque SAX e DOM non sono completamente slegati: la maggior parte dei parser DOM, utilizzano, infatti, la libreria SAX.