Newsgroup: it.comp.java
Titolo: SAX, DOM e JDOM ed XML

Salve a tutti, devo leggere e modificare un file xml e mi trovo a dover 
scegliere tra SAX e DOM, non conoscendo a priori quanto potrà diventare 
grande il file xml vorrei utilizzare SAX e su internet ho trovato 
qualche esempio su come usarlo, però sono tutti esempi in cui il file 
xml viene letto.
Ora, scusate l'ignoranza, mi viene un dubbio SAX può essere utilizzato 
solo per leggere un file xml già esistente o mi permette anche di andare 
a modificare il valore di qualche attributo e di qualche elemente? Se si 
dove posso trovare una guida?
Continuando a girare mi sono imbattuto in JDOM a quanto ho capito è una 
via di mezzo tra DOM e SAX, è effettivamente così? Carica tutto il 
documento in memoria o no?
Grazie a tutti, ciao ciao.

 documento in memoria o no?
Sì. Con file grossi tende a "detonare" se non configuri adeguatamente i 
parametri di gestione della memoria (Xms e Xmx).
Ciao,
Paolo

Pablo Xon ha scritto:

Ciao ho guardato quella guida ma ho visto che lì scrive un file xml 
dall'inizio con sax, a me servirebbe modificare il contenuto di un 
elemento o di un attributo di un file che già sto leggendo con sax e da 
lì non è che abbia capito molto, sto continuando a cercare guide però al 
momento ho fatto solo buchi nell'acqua.
Qualche suggerimento?
Grazie, ciao ciao.

 Qualche suggerimento?
Spiegami meglio: tu vuoi modificare tutto un xml mentre lo leggi?
In questo caso sax non è adeguato: dovresti usare un parser e, allo 
scatenarsi dell'evento che ti interessa (per esempio trovando il nodo X 
con attributo Y), salvare (tutta) la struttura modificata.
A questo punto tanto vale usare DOM, caricare l'albero dall'xml e 
modificare ciò che ti serve.
Se ho capito correttamente quello che devi fare...
Ciao,
Paolo

Pablo Xon ha scritto:

Ciao allora io vorrei fare questo, da un lato leggere semplicemente il 
file xml e comincio a capire come fare con SAX.
Dall'altro lato io vorrei prendere un documente xml, cercare un elemento 
e modificare il contenuto, già presente, di un attributo o il contenuto 
del nodo e salvare l'albero.
Per questa seconda parte non ho ancora trovato nulla per quanto riguarda 
SAX.
Ho trovato una guida per j5ee su StAX e la sto leggendo sperando di 
poter fare quello che mi sono proposto.
Questo è quello che vorrei fare, con SAX è possibile? Da quanto leggo mi 
sembra di no, dovrei usare dom o jdom? Nel caso tra i due quale è più 
leggero?
Grazie, ciao ciao.

 leggero?
Usa DOM se ti interessa anche per altri linguaggi, JDOM se pensi di 
usarlo solo con Java. E' anche un po' più semplice, forse....
Ciao,
Paolo

Pablo Xon ha scritto:

Ciao, seguendo le tue indicazioni mi sto indirizzando in questo modo, 
quando devo semplicemente leggere il file xml uso SAX, cosa che ho già 
implementato, per modificare il file xml utilizzo JDOM dato che mi serve 
solo con java.
E' una scelta conveniente?


 E' una scelta conveniente?
Ni.
A livello teorico quadra, ma usare due strumenti per fare lo stesso 
lavoro mi sembra uno spreco di energie.
Fossi in te userei solo JDOM, visto che i file li devi modificare, ma si 
tratta anche di scelte personali.
Ti consiglio la lettura di questo valido articolo:
http://www.cafeconleche.org/books/xmljava/chapters/ch09s11.html