JAXB...e NetBeans

Friday, August 03, 2007

Come ha ben scritto Danilo nel suo blog, JAXB (Java Architecture for XML Binding) si rivela un alleato utilissimo per evitare di effettuare il "parsing" e la generazione manuale dei documenti XML da Java; mediante le sue feature è quindi possibile lavorare comodamente con oggetti Java, settarne le property e "ignorare" l'XML che verrà generato mediante marshalling. L'operazione inversa si chiama unmarshalling. JAXB 2.0 è incluso in Java SE 6 e quindi, utilizzando questa versione della piattaforma, non abbiamo più bisogno di ottenere le API e i tool mediante pacchetti aggiuntivi. Inoltre in JAXB 2.0, mediante l'utilizzo del meccanismo delle annotations (introdotte a partire da Java 5), è possibile annottare dei comuni JavaBeans in modo che, a partire da essi, vengano generati, mediante marshalling, dei documenti XML conformi alle annotazioni specificate. Questo senza avere, in origine, un XML Schema di partenza; in pratica si tratta del procedimento "inverso" rispetto a quanto spiegato da Danilo. Questo fatto trova conferma se andiamo ad esaminare una qualunque classe Java generata dal tool xjc, a partire dall'XML Schema, come, per esempio, questa:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"description",
"location",
"date",
"duration",
"data"
})
@XmlRootElement(name = "event")
public class Event {

@XmlElement(required = true, defaultValue = "generic")
protected String description;
@XmlElement(required = true, defaultValue = "everywhere")
protected String location;
@XmlElement(required = true)
protected XMLGregorianCalendar date;
@XmlElement(required = true)
protected BigInteger duration;
@XmlElement(required = true)
protected String data;
@XmlAttribute(required = true)
protected String nodeID;

...

Nel precedente frammento di codice, dal quale ho volutamente escluso i metodi accessori, si può osservare l'utilizzo massivo della annotazioni che permettono di "indicare", per ciascun membro della classe, il corrispondente "ruolo" nell'XML che verrà eventualmente generato in fase di marshalling.
Volendo evitare di usare i tool di JAXB da linea di comando,per la generazione delle classi a partire da XML Schema, ci viene in aiuto NetBeans 6.0, che include una nuova feature per questa operazione di generazione del codice, la quale diventa davvero questione di pochi click.

E' sufficiente, per qualunque progetto nell'IDE, accedere al menu
File->New File...->XML->JAXB Binding...
Nel wizard mostrato, è possibile specificare un "binding name", l'XML Schema d'origine (anche remoto, via HTTP ;-) ), il package nel quale "ritrovare" le classi Java che verranno generate ed alcune opzioni di compilazione... poi continuare con il wizard per ottenere quanto voluto, dopodichè è possibile iniziare ad usarle nel progetto esistente. Bella e comoda nuova feature di NetBeans 6.0!

You Might Also Like

0 commenti

Subscribe