2011-03-02 18 views

Respuesta

12

Puede utilizar las API javax.xml.validation para esto.

SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); 
URL schemaURL = // The URL to your XML Schema; 
Schema schema = sf.newSchema(schemaURL); 
Validator validator = schema.newValidator(); 
DOMSource source = new DOMSource(xmlDOM); 
validator.validate(source); 

El siguiente ejemplo demuestra cómo validar un modelo de objeto JAXB con un esquema, pero se podrán ver que es fácil de reemplazar el JAXBSource con un DOMSource de DOM:

+0

Gracias Blaise. Aunque no está directamente relacionado con la pregunta, me gustaría preguntarle otra: ¿Qué ocurre si un Esquema especificado (que ha pasado un StreamSource a SchemaFactory) incluye otro esquema que está disponible solo como un recurso de ClassLoader? Pasar dos StreamSource no funcionó, desafortunadamente. – MRalwasser

+2

@MRalwasser - ver 'SchemaFactory.setResourceResolver'. hay todo tipo de información en los javadocs ... – jtahlborn

+0

@jtahlbborn: gracias, esto funcionó. Pero: parece que al validar un documento de esa manera no se respetan los valores predeterminados del esquema, el documento y sus nodos permanecen intactos. – MRalwasser

Cuestiones relacionadas