XML ad Eventi

Vediamo uno dei modi possibili per manipolare file XML in Java

Di recente mi sono imbattuto in un messaggio molto originale mentre stavo scrivendo una classe che doveva semplicemente leggere un file di tipo XML con il classico parse DOM. Il messaggio che mi appariva quando con l’IDE di sviluppo andavo a compilare la classe suonavo pressappoco così: “il DOM per fare il parse dei file XML potrebbe non essere supportato in futuro da Java”. Immaginate voi la sorpresa della cosa. Dopo tutto il DOM andava molto bene, era facile da usare anche se caricava molte cose in memoria e i tempi per le varie operazioni di parse non erano sempre favorevoli.

Dopo essermi rilassato ho iniziato a controllare in giro per cercare di capire cosa la Sun(R) aveva utilizzato per ovviare alla perdita futura del DOM. Come al solito si butta un occhio al sito java.sun.com e in particolare all’indirizzo delle pagine che mi interessavano particolarmente java.sun.com/xml. Qui troverete tutto quello che vi serve per scrivere la vostra applicazione per scrivere o leggere file di tipo XML.

Non voglio spiegarvi il tutto per filo e per segno, la documentazione ufficiale è più che esplicativa in quel senso. Vi dico solo che il nuovo modo per operare con xml si basa sulla logica degli eventi. In altre parole il programmatore deve riconoscere l’evento che ha per le mani, tramite una serie di if o più semplicemente con l’uso di switch, e di comportarsi di conseguenza. Devo dire che gli oggetti che lavorano con questa logica sono molto più veloci rispetto al classico DOM, ma non sono molto intuitivi, per lo meno seguono una logica differente rispetto ai precedenti che potrebbero mettere in difficoltà il programmatore. Con me è successo.

Generazione file XML

Il risultato finale di tutto questo codice è:

L’intero contenuto del file si trova in jugUdine.xml. Se il file esiste allora verrà sovrascritto, se non esiste verrà automaticamente creato sul momento al percorso specificato.

Lettura di un File XML

Per la lettura del file xml si possono usare due soluzioni, quella basata sullo stream di lettura e quello meno efficiente degli eventi. Per questo esempio ho preferito usare il secondo metodo, quello degli eventi. Con questo metodo si ottengono degli oggetti ad ogni passo di analisi da parte della classe che lo implementa. Tale oggetto deve essere riconosciuto e poi da noi analizzato.

Un esempio di codice è il seguente:

La cosa più interessante di questo pacchetto messo a disposizione da Java è il fatto che ci permette di avere un canale di stream aperto sia in lettura che in scrittura sullo stesso file. Questo ci permette di operare in modo più comodo sui tag XML.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *