我创建了一个 XML 模式 (foo.xsd) 并使用 xjc 为 JAXB 创建我的绑定类。假设根元素是 collection 我正在写N document 对象,它们是复杂类型。

因为我计划写出大型 XML 文件,所以我使用 Stax 写出 collection 根元素,并使用 JAXB 来编组文档子树 Marshaller.marshal(JAXBElement, XMLEventWriter). 。这是推荐的方法 jaxb 的非官方用户指南.

我的问题是,如何在编组 XML 时验证它?如果我将模式绑定到 JAXB 编组器(使用 Marshaller.setSchema()),我收到验证错误,因为我只是编组子树(它抱怨它没有看到 collection 根元素”)。我想我真正想做的是将模式绑定到 Stax XMLEventWriter 或类似的东西。

对这种总体方法的任何评论都会有所帮助。基本上我希望能够使用 JAXB 在不耗尽内存的情况下编组和解组大型 XML 文档,因此如果有更好的方法来执行此操作,请告诉我。

有帮助吗?

解决方案

一些 Stax 实现似乎能够验证输出。请参阅以下类似问题的答案:

将 Stax2 与 Woodstox 结合使用

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top