是否可以使用 JAXB 2.0 验证封送的 XML?
2022-09-02 20:57:58
显然,在 JAXB 的版本 2 中 - 验证器类已被弃用 - 这是否意味着编组程序正在自动验证您的 XML?如果是这样,它似乎并没有抱怨我正在形成的一些不正确的XML!任何人都可以给我一些建议,说明如何验证封送的XML以确保它符合XSD架构。
非常感谢。
显然,在 JAXB 的版本 2 中 - 验证器类已被弃用 - 这是否意味着编组程序正在自动验证您的 XML?如果是这样,它似乎并没有抱怨我正在形成的一些不正确的XML!任何人都可以给我一些建议,说明如何验证封送的XML以确保它符合XSD架构。
非常感谢。
通过使用 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
请查看此参考。
如果要验证 Java 对象根据模式生成有效的 XML,请查看 JAXB-Verification 项目:
https://jaxb-verification.dev.java.net/
它是xjc的JAXB RI插件,它将为XML模式生成对象验证器实现。这样就避免了为了验证 XML 而必须封送 Java 对象。