XML Tutorial - 6 - Usare XmlBeans
Con l'articolo di oggi vediamo in dettaglio come sfruttare una delle librerie più note nella gestione dei file XML, ovvero XMLBEANS dell'Apache Software Foundation.
Questa libreria permette di generare a partire dallo schema XSD tutte le classi per la manipolazione di file xml che rispettino lo schema dato.
Per l'installazione rimando alla guida esauriente presente sul sito di XMLBEANS. Per l'utilizzo vediamo invece quali sono gli step da seguire.
Individuiamo uno schema XSD, da cui generare le nostre classi e scegliamo la struttura libro.
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.org/libro" xmlns:tns="http://www.example.org/libro" elementFormDefault="qualified">
<element name="libro" type="tns:LibroType"></element>
<complexType name="LibroType">
<sequence>
<element name="capitolo" type="tns:CapitoloType"
maxOccurs="unbounded" minOccurs="1">
</element>
<element name="autore" type="tns:AutoreType" maxOccurs="unbounded" minOccurs="1"></element>
</sequence>
<attribute name="titolo" type="string" use="required"></attribute>
</complexType>
<complexType name="CapitoloType">
<sequence>
<element name="contenuto" type="string" minOccurs="1" maxOccurs="1"></element>
</sequence>
<attribute name="titolo" type="string" use="required"></attribute>
</complexType>
<complexType name="AutoreType">
<attribute name="Cognome" type="string" use="required"></attribute>
<attribute name="Nome" type="string" use="required"></attribute>
</complexType>
</schema>
Tramite la direttiva scomp posso generare la libreria contenente le classi per la manipolazione dei file.
scomp libro.xsd -out libro.jar -javasource 1.5
Con questo comando dico a XmlBeans di generare un jar che libro.jar secondo gli standard di java 1.5
A questo punto importanto la libreria dentro un qualsiasi progetto posso creare file xml in accordo con lo schema definito o validare dei file xml esistenti.
Lettura File XML
File file = new File("libro.xml");
LibroDocument parse = Factory.parse(file);
LibroType libro = parse.getLibro();
In questo modo posso instanziare un oggetto libro ottenuto dalla lettura del file xml
Creazione File XML
LibroDocument newInstance = Factory.newInstance();
newInstance.addNewLibro();
newInstance.getLibro().setTitolo("titolo");
newInstance.save(new File("libro2.xml"));
In questo modo posso creare un file xml a partire dall'oggetto java.
Validazione File XML
Ultimo caso, ma non per questo meno interessante, prevede lo scenario in cui l'utente vuole verificare se il file da analizzare rispetta lo schema e in caso negativo in quali punti non è corretto.
Collection<XmlError> errors = new ArrayList<XmlError>();
XmlOptions options = new XmlOptions();
options.setErrorListener(errors);
newInstance.validate(options);