PDA

Visualizza la versione completa : DOM o SAX


tina8
19-02-2010, 18:53
Buonasera, devo scrivere un algoritmo che legga un documento XML generando dei contenitori a partire dai path xml(ad esempio il contenitore dei nomi degli studenti a partire dal path studenti/nome), ho deciso di utilizzare xerces come parser. Il mio dubbio se utilizzare DOM o SAX, o meglio inizialmente mi ero orientata su SAX in quanto dovr elaborare documenti di grandi dimensioni, ma credo che non sia adatto per il lavoro da fare. Leggendo in internet ho trovato le seguenti indicazioni nell'utilizzo di sax e dom:

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.

Quale pensate sia quello pi adatto al mio lavoro?
Grazie e ciaoooo

shodan
20-02-2010, 13:12
Difficile dire qualcosa senza sapere di preciso che ti serve.
A naso, visto che parli di documenti grossi, direi SAX.

tina8
20-02-2010, 16:47
In pratica devo leggere un file xml del tipo:

<root>
<studente>
<nome>Antonio</nome>
<cognome> Verdi </cognome>
</studente>
<studente>
<nome>Mario</nome>
<cognome>Rossi</cognome>
</studente>
</root>

e generare dei contenitori di elementi a partire dai path nel modo seguente:

1. studente/nome ={Antonio, Mario}
2. studente/cognome ={Verdi, Rossi}

Non so se sono stata chiara. :bh:

shodan
20-02-2010, 18:31
Se non hai bisogno di accedere a ogni singolo elemento, in ogni momento, SAX dovrebbe essere la scelta migliore. Se il documento di notevoli dimensioni, il DOM lo tiene mette in memoria per consentire l'accesso immediato agli elementi, SAX no; si limita a scorrerlo e basta, e questo comporta che per rileggere un dato, serve rileggere il file.

Hai postato dei punti: quali rispondono alle tue esigenze? A mio avviso da li che dovresti partire.

Loading