18

Apparently in version 2 of JAXB - the validator class has been deprecated - does this mean the marshaller is automatically validating your XML? If so it doesn't seem to be complaining about some of the incorrect XML I am forming! Can anyone give me some advice on how I can validate marshalled XML to make sure it conforms to the XSD schema.

Many thanks.

4

2 回答 2

27

Validation capabilities have been expanded in JAXB 2.0 through the use of the JAXP 1.3 Schema Validation Framework.

Where before you did:

unmarshaller.setValidating(true);

now you need to do:

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

If you pass null into setSchema, it disables validation.

Please check this reference.

于 2009-04-30T09:17:24.150 回答
2

If you are looking to verify the Java objects generate valid XML according to a schema, look at the JAXB-Verification project:

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

It is a JAXB RI plugin to xjc that will generate an ObjectVerifier implementation for the XML schema. This avoids having to marshal the Java objects in order to validate the XML.

于 2010-08-04T20:43:05.317 回答