2009-04-30 13 views
19

Aparentemente en la versión 2 de JAXB, la clase de validador ha quedado en desuso, ¿significa esto que el contador de referencias marshaller valida automáticamente su XML? ¡Si es así, no parece quejarse de algunos de los XML incorrectos que estoy formando! ¿Alguien puede darme algunos consejos sobre cómo puedo validar XML marshalled para asegurarme de que se ajusta al esquema XSD.¿Se puede validar XML estructurado con JAXB 2.0?

Muchas gracias.

Respuesta

27

Las capacidades de validación se han ampliado en JAXB 2.0 mediante el uso del Marco de validación de esquema JAXP 1.3.

Donde antes que tú:

unmarshaller.setValidating(true); 

Ahora tiene que hacer:

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

Si pasa nulo en setSchema, deshabilita la validación.

Por favor, consulte this reference.

+1

Pones el mismo código para un MARSHALLER - este código parece que es para UNMARSHALLER ... – Vidar

+1

Sí. Puede hacer exactamente lo mismo para marshaller y unmarshaller. –

2

Si usted está buscando para verificar los objetos Java generan XML válido de acuerdo con un esquema, analizar el proyecto JAXB-Verificación:

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

Es un plugin JAXB RI a xjc que generará una Implementación de ObjectVerifier para el esquema XML. Esto evita tener que ordenar los objetos de Java para validar el XML.

Cuestiones relacionadas