java - JAXB架构验证何时取消编组非根元素



xml xsd (1)

你有没有尝试传递给unmarshal组绑定的bean的类? 就像例65中解释的那样。解组成一个已知类型

当您使用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'

即使NestedObjectType在XSD中定义良好,也会失败。 有没有任何选项来启用嵌套对象验证? 请注意,定义新的模式是一个悲惨的选择,因为XSD是由别人维护的我的应用程序的外部。