当您使用 JAXB 解组整个 XML 时,您可以设置 XML 模式以在解析期间启用验证:
//javax.xml.validation.Schema schema = ...
jaxbUnmarshaller = JAXBContext.newInstance(SomeRootType.class).createUnmarshaller();
jaxbUnmarshaller.setSchema(schema);
另一方面,当您解组列表时NestedObjest
来自 XML 的 s,一一(例如,为了减少内存使用)此方法失败(因为 Schema 只接受 root),但有一个例外:
org.xml.sax.SAXParseException; lineNumber: 2; columnNumber: 22; cvc-elt.1: Cannot find the declaration of element 'NestedObject'
即使它失败了NestedObjectType
在 XSD 中定义明确。是否有任何选项可以启用嵌套对象验证?请注意,定义新架构是一个糟糕的选择,因为 XSD 是由其他人维护的我的应用程序的外部。
您是否尝试过传递给unmarshal
方法 绑定 bean 的类?就像解释的那样示例 65. 解组为已知类型 https://javaee.github.io/jaxb-v2/doc/user-guide/ch03.html#unmarshalling-xmlrootelement-and-unmarshalling
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)