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

时间:2009-04-30 08:57:14

标签: java validation jaxb

显然在JAXB的第2版中 - 不推荐使用验证程序类 - 这是否意味着编组程序会自动验证您的XML?如果是这样,它似乎并没有抱怨我正在形成的一些不正确的XML!任何人都可以给我一些关于如何验证编组XML以确保它符合XSD架构的建议。

非常感谢。

2 个答案:

答案 0 :(得分:27)

通过使用JAXP 1.3模式验证框架,JAXB 2.0中的验证功能得到了扩展。

你之前的位置:

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,则会禁用验证。

请检查this reference

答案 1 :(得分:2)

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

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

它是xjc的JAXB RI插件,它将为XML模式生成ObjectVerifier实现。这样就不必编组Java对象以验证XML。