【发布时间】:2018-01-25 18:32:26
【问题描述】:
当您使用 JAXB 解组整个 XML 时,您可以设置 XML 模式以在解析期间启用验证:
//javax.xml.validation.Schema schema = ...
jaxbUnmarshaller = JAXBContext.newInstance(SomeRootType.class).createUnmarshaller();
jaxbUnmarshaller.setSchema(schema);
另一方面,当您从 XML 中解组 NestedObjests 列表时,一个一个(例如,为了减少内存使用)此方法会失败(因为 Schema 只接受 root)并出现异常:
org.xml.sax.SAXParseException; lineNumber: 2; columnNumber: 22; cvc-elt.1: Cannot find the declaration of element 'NestedObject'
即使NestedObjectType 在 XSD 中定义明确,它也会失败。有没有启用嵌套对象验证的选项?请注意,定义新架构是一个糟糕的选择,因为 XSD 对于我的应用程序是外部的,由其他人维护。
【问题讨论】:
-
您能否提供一些示例输入,出现此错误的位置?