解组非根元素时的JAXB模式验证

时间:2017-08-17 11:08:51

标签: java xml xsd jaxb

当您使用JAXB解组整个XML时,您可以设置XML架构以在解析期间启用验证:

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

另一方面,当您从XML解组NestedObjest列表时,逐个(例如,减少内存使用)此方法失败(因为Schema只接受root),但有异常:

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

即使在XSD中明确定义NestedObjectType,它也会失败。是否有任何选项可以启用嵌套对象验证?请注意,定义新架构是一个悲惨的选择,因为XSD是我的应用程序外部维护的。

1 个答案:

答案 0 :(得分:0)

您是否尝试将绑定bean的类传递给unmarshal方法?如Example 65. Unmarshalling into a known type

中所述