是否可以使用 JAXB 2.0 验证封送的 XML?

2022-09-02 20:57:58

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

非常感谢。


答案 1

通过使用 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

请查看此参考。


答案 2

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

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

它是xjc的JAXB RI插件,它将为XML模式生成对象验证器实现。这样就避免了为了验证 XML 而必须封送 Java 对象。


推荐