Can one validate marshalled XML with JAXB 2.0?

2019-02-01 21:58发布

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.

2条回答
时光不老,我们不散
2楼-- · 2019-02-01 22:25

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.

查看更多
唯我独甜
3楼-- · 2019-02-01 22:27

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.

查看更多
登录 后发表回答