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