2009-04-30 4 views
19

Apparemment dans la version 2 de JAXB - la classe de validateur a été dépréciée - cela signifie-t-il que le marshaller valide automatiquement votre XML? Si c'est le cas, il ne semble pas se plaindre d'un XML incorrect que je suis en train de former! Quelqu'un peut-il me donner quelques conseils sur la façon dont je peux valider le XML marshalled pour m'assurer qu'il est conforme au schéma XSD.Peut-on valider un XML marshallé avec JAXB 2.0?

Merci beaucoup.

Répondre

27

Les capacités de validation ont été étendues dans JAXB 2.0 grâce à l'utilisation du framework de validation de schéma JAXP 1.3.

Où avant vous:

unmarshaller.setValidating(true); 

maintenant que vous devez faire:

SchemaFactory sf = SchemaFactory.newInstance(
    javax.xml.XMLConstants.W3C_XML_SCHEMA_NS_URI); 
Schema schema = sf.newSchema(new File("myschema.xsd")); 
unmarshaller.setSchema(schema); 

Si vous passez null dans setSchema, il désactive la validation.

Veuillez vérifier this reference.

+1

Mettez-vous le même code pour un MARSHALLER - ce code ressemble à un UNMARSHALLER ... – Vidar

+1

Oui. Vous pouvez faire exactement la même chose pour marshaller et unmarshaller. –

2

Si vous cherchez à vérifier les objets Java génèrent XML valide selon un schéma, regardez le projet JAXB-vérification:

https://jaxb-verification.dev.java.net/

Il est un plugin JAXB RI à xjc qui va générer un Implémentation ObjectVerifier pour le schéma XML. Cela évite d'avoir à marsarchiser les objets Java afin de valider le XML.

Questions connexes