2010-11-18 21 views
4

est-il possible de vérifier une valeur dans un objet java avec quelques règles dans un schéma xml?Vérification d'une valeur java avec un schéma xml

Par exemple, j'ai un String txt = "blablabla", et je devrais vérifier si c'est ok pour <xs:element name="foo" type="string32"/>, avec string32 une restriction à 32 caract. longueur max.

Est-ce possible? Si ce n'est pas possible avec xml schema et jaxb, existe-t-il d'autres langages de schémas possibles?

Merci.

Répondre

2

Vous pouvez effectuer les opérations suivantes:

import java.io.File; 
import javax.xml.XMLConstants; 
import javax.xml.bind.JAXBContext; 
import javax.xml.bind.util.JAXBSource; 
import javax.xml.validation.Schema; 
import javax.xml.validation.SchemaFactory; 

public class Demo { 

    public static void main(String[] args) throws Exception { 
     SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); 
     Schema schema = sf.newSchema(new File("customer.xsd")); 

     JAXBContext jc = JAXBContext.newInstance(Customer.class); 

     Customer customer = new Customer(); 
     // populate the customer object 
     JAXBSource source = new JAXBSource(jc, customer); 
     schema.newValidator().validate(source); 
    } 

} 

Pour un exemple plus détaillé voir:

1

Vous devez mapper l'objet Java sur xml, puis placer l'objet dans xml, puis appliquer le XML à un analyseur qui effectue la validation du schéma. Peut-être préférable d'écrire du code pour analyser le schéma XML et lire le schéma, puis utiliser les informations du schéma pour créer un validateur pour votre objet. De cette façon, vous ne devrez pas placer votre objet dans xml juste pour le valider.

+1

Il me semble être un homme un année travail !! Y a-t-il une bibliothèque pour le faire, ou pouvez-vous fournir un exemple simple? Merci. – Istao

+1

Découvrez ma réponse comment cela peut être fait avec la bibliothèque javax.xml.validation: http://stackoverflow.com/questions/4218935/checking-a-java-value-with-an-xml-schema/4219090#4219090 –