可以使用JAXB 2.0validation编组的XML吗?

显然在JAXB的第2版中 – validation者类已被弃用 – 这是否意味着编组器会自动validation您的XML? 如果是这样,它似乎没有抱怨我正在形成的一些不正确的XML! 任何人都可以给我一些关于如何validation编组XML以确保它符合XSD架构的建议。

非常感谢。

通过使用JAXP 1.3模式validation框架,JAXB 2.0中的validationfunction得到了扩展。

在你之前的地方:

unmarshaller.setValidating(true); 

现在你需要这样做:

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

如果将null传递给setSchema ,则会禁用validation。

请检查此参考 。

如果您希望根据模式validationJava对象是否生成有效的XML,请查看JAXB-Verification项目:

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

它是xjc的JAXB RI插件,它将为XML模式生成ObjectVerifier实现。 这避免了为了validationXML而必须编组Java对象。