Validazione JAXP – Java API for XML Processing

Jaxp è una tecnologia che si occupa della manipolazione e della validazione degli schemi XSD in Java, queste API Java si trovano nel package javax.xml.validation.
Gli schemi XML, genericamente chiamati XSD, sono nati con lo stesso scopo delle DTD:
– Specificare la struttura dei documenti
– Specificare il tipo dei dati utilizzati nei fogli XML
Gli schemi XSD sono molto più articolati delle DTD, ma tuttavia forniscono molti altri comandi specie per la validazione, a tal proposito vi rimando alla guida Feed di Dati RSS 2.0 – Google Merchant Center per capire per cosa potrebbe essere utilire validare dei fogli XML a cui è collegata una struttura definita dagli schemi XML, anche se ciò è realizzato per un sistema PHP based, può essere di spunto per chi invece opera su una piattaforma Java e si sta ponendo difronte a questo problema.
L’implementazione più diffusa ed utilizzata per JAXP è xerces del progetto Apache XML.

Tecnologia per la manipolazione di file XSD ed XML con Java

Java Application for XML Processing

I passi da seguire per effettuare la validazione degli schemi Jaxp sono:
1. Creare un’istanza SchemaFactory per può essere necessario l’uso delle constanti situate nel package javax.xml.XMLConstants;
2. Generazione dello schema mediante lo SchemaFactory
3. Creazione di un Validator a partire dallo schema
4. Chiamare il metodo validate di Validator passando uno ogetto Source (ossia il documento da validare).

public class XMLValidating {
 
    private String XMLValidating;
 
    /**
     * Validazione di uno schema.
     * @param fx file xml.
     * @param sf file di schema.
     * @return
     */
    public boolean validateDocument(File fx, File fs) {
        MyErrorHandler eh = new MyErrorHandler();
        <strong>/* PUNTO 1. */</strong>
        SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
        sf.setErrorHandler(eh);
        try {
            <strong>/* PUNTO 2. */</strong>
            Schema s = sf.newSchema(fs); //con schema definito dall'utente   
            <strong>/* PUNTO 3. */</strong>     
            Validator v = s.newValidator();
            eh.reset();
            v.setErrorHandler(eh);
            <strong>/* PUNTO 4. */</strong>
            v.validate(new StreamSource(fx),
                /* opzionale*/ new StreamResult(new OutputStreamWriter(System.out, "ISO-8859-1")));
        } catch (SAXException ex) {
            //
        } catch (IOException ex) {
            Logger.getLogger(XMLValidating.class.getName()).log(Level.SEVERE, null, ex);
        }
        if (eh.hasProblems()) {
            System.out.println("NON valido");
            return false;
        } else {
            System.out.println("\nvalido");
            return true;
        }
    }

Come si può notare facilmente alla seguente validazione è stata collegata una classe chiamata MyErrorHandler il cui scopo è il fornire errori più dettagliati qualora avvengono dei compotamenti inaspettati del programma.
L’intero progetto è stato realizzato utilizzando l’IDE NetBeans, ed esso può essere scaricato al seguente link: Progetto Validazione XSD.
NOTA BENE:In questo progetto occorrerà cambiare i path dei file xsd ed xml passati nel main.

Validazione JAXP – Java API for XML Processing ultima modidfica: 2014-07-29T23:24:49+02:00 da Gianluca Di Vincenzo
Posted in: Java

By on 29 Luglio 2014

Tagged: , , , , ,