MokaByte
Numero 30 - Maggio 1999
|
|||
|
II parte |
||
|
Mauro Molino |
|
|
L'utilizzo congiunto di Java e XML abbiamo visto che in teoria e' abbastanza semplice. Diversamente da come spesso accade, in questo caso la pratica risulta altrettanto semplice, per cui con poco codice e' possibile ottenere una reale integrazione. Nel corso dell'articolo vedremo il codice strettamente necessario per poter cominciare a lavorare sull'argomento, ma il tutto e' immediatamente riportabile a situazioni diverse e piu' complesse |
XML Parser
Per poter manipolare un file XML attraverso Java, sarebbe necessario aprire il file XML e quello DTD (Document Type Definition), attraverso quest'ultimo creare una tabella dei nodi presenti e, una volta creato l'albero, interpretare il file XML per estrarne i dati (ricordiamo che il file DTD è quello che contiene la definizione dei vari elementi/nodi presenti nel file XML). Un vero incubo. Fortunatamente non ci è richiesto questo lavoro perché esistono delle classi che lo fanno per noi. Sono i Parser, classi in grado di interpretare la struttura ad albero del file XML, permettendoci di trattare l'oggetto risultante come qualcosa di più gestibile tramite Java. In realtà, una volta che il file è stato "digerito" dal parser, avremo un oggetto che avrà una struttura DOM (Document Object Model). La definizione di DOM è più o meno la seguente: DOM è un set di interfacce indipendenti da piattaforma e linguaggio che permette di accedere e modificare la struttura e i dati di un documento XML.DOM è definito dall'onnipresente consorzio W3C. Tornando ai parser, ne sistono diversi in circolazione. Per citare i più blasonati: IBM XML Parser for Java e Sun ProjectX XML Parser, ma ce ne sono ormai anche di terze parti altrettanto validi. In generale l'utilizzo è molto simile, cambia solo il modo di caricare il file XML. In questo articolo utilizzeremo il parser della Sun. Quello che faremo è convertire in memoria il contenuto di un documento XML in un oggetto Java. L'esempio è generico e riportabile a qualsiasi tipologia di esigenza. Conversione di un oggetto XML in oggetto JavaIl nostro DTD è molto semplice:<?xml version="1,0"?>
MOKABYTE
Naturalmente
la struttura MOKABYTE può contenere un qualsiasi numero di elementi
ARTICOLO.
import org.w3c.dom.*;il primo import ci mette a disposizione la classe Document, che conterrà il nostro file XML in struttura DOM, dopo che sia stato convertito dal parser. Il tutto avviene così: try {A questo punto abbiamo un oggetto DOM a tutti gli effetti e siamo in grado di estrarne le informazioni presenti Supponiamo che il nostro file XML contenga le seguenti informazioni: <?xml version="1.0"?>La struttura è semplice e come vediamo sono presenti 3 "record" di tipo ARTICOLO. Possiamo a questo punto sapere , ad esempio, quanti elementi base del nostro file esistano (ROOT_ELEMENT_TAG, che rappresentano quegli elementi del documento che non abbiano un padre che non sia il documento stesso). Per fare questo ci serviamo del metodo getSize della classe XmlUtils : int numeroArticoli=XmlUtils.getSize (doc, ROOT_ELEMENT_TAG );Ora possiamo estrarre un "record" qualsiasi di quelli esistenti e leggerne i dati, Nel nostro caso avremo un record di tipo "ARTICOLO" del quale potremo conoscere: Titolo, Autore e Mese. Element articolo=XmlUtils.getElement(doc, ROOT_ELEMENT_TAG , 1);
public class Articolo {
Articolo artic=new Articolo();
Conversione di un oggetto Java in un oggetto XMLIl passaggio inverso a quello visto in precedenza risulta altrettanto semplice.Intanto sappiamo che e' possibile inserire il DTD direttamente nel file XML, senza bisogno di avere due file separati. Per fare la conversione , supponiamo di avere ancora la classe Articolo descritta precedentemente, con in piu' i seguenti metodi: String getTitolo() {
// Importiamo al solito le classi per gestire l'input/output,Il codice e' ampiamente commentato, per cui penso non ci sia bisogno di dilungarvisi sopra. Anche in questo caso la procedura utilizzata e' molto semplice. Come abbiamo visto, l'interconversione fra Java e XML e' pressoche' immediata, non richiede manipolazioni complesse e ci permette di far incontrare due realta' tecnologiche di grande attualita'. ConclusioniAbbiamo visto come, con pochissimo codice, sia possibile ottenere la conversione di strutture di dati dal mondo Java a quello XML. Questo fatto e' sintomatico, in quanto in grado di dimostrare la stretta affinita' esistente fra le due tecnologie.Il grande interesse che si e' creato intorno a XML, e il rapido proliferare di tools per l'integrazione fra XML e Java, e' la prova lampante che la cooperazione fra i due e' gia' data come fatto acquisito. In quest'ottica, il tempo utilizzato a sperimentare possibili integrazioni non e' di certo tempo sprecato. Al riguardo potrebbe essere interessante sperimentare l'utilizzo congiunto di Java e PGML (Precision Graphics Markup Language), un linguaggio XML particolarmente votato alla grafica vettoriale 2D su web. Con la stessa logica utilizzata in questo articolo per mappare strutture XML in Java e viceversa, e' infatti possibile mappare strutture grafiche PGML in Java, con tutta una serie di interessanti possibili utilizzi. Come si dice : l'unico limite e' la fantasia.......... |
|
||
|
||
MokaByte ricerca
nuovi collaboratori
|
||
|