取消编组非根元素时的 JAXB 模式验证



使用 JAXB 取消封送整个 XML 时,可以设置 XML 模式以在解析期间启用验证:

//javax.xml.validation.Schema schema = ...
jaxbUnmarshaller = JAXBContext.newInstance(SomeRootType.class).createUnmarshaller();
jaxbUnmarshaller.setSchema(schema);

另一方面,当您从 XML 中取消封送NestedObjest列表时,一个接一个(例如,为了减少内存使用量(,此方法会失败(因为架构仅接受根(,但有一个例外:

org.xml.sax.SAXParseException; lineNumber: 2; columnNumber: 22; cvc-elt.1: Cannot find the declaration of element 'NestedObject'

即使 XSD 中明确定义了NestedObjectType,它也失败。是否有任何选项可以启用嵌套对象验证?请注意,定义新模式是一个糟糕的选择,因为 XSD 对于其他人维护的应用程序来说是外部的。

您是否尝试过将绑定 bean 的类传递给unmarshal方法?如示例 65 中所述。解组为已知类型

最新更新