【发布时间】:2009-04-30 08:57:13
【问题描述】:
显然在 JAXB 的第 2 版中 - 验证器类已被弃用 - 这是否意味着编组器正在自动验证您的 XML?如果是这样,它似乎并没有抱怨我正在形成的一些不正确的 XML!谁能给我一些关于如何验证编组 XML 以确保它符合 XSD 架构的建议。
非常感谢。
【问题讨论】:
标签: java validation jaxb
显然在 JAXB 的第 2 版中 - 验证器类已被弃用 - 这是否意味着编组器正在自动验证您的 XML?如果是这样,它似乎并没有抱怨我正在形成的一些不正确的 XML!谁能给我一些关于如何验证编组 XML 以确保它符合 XSD 架构的建议。
非常感谢。
【问题讨论】:
标签: java validation jaxb
通过使用 JAXP 1.3 Schema Validation Framework,验证功能在 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。
【讨论】:
如果您希望验证 Java 对象是否根据模式生成有效的 XML,请查看 JAXB-Verification 项目:
https://jaxb-verification.dev.java.net/
它是一个用于 xjc 的 JAXB RI 插件,它将为 XML 模式生成 ObjectVerifier 实现。这避免了为了验证 XML 而必须编组 Java 对象。
【讨论】: