使用 JAXB 和 Stax 进行验证以编组 XML 文档
题
我创建了一个 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 实现似乎能够验证输出。请参阅以下类似问题的答案:
不隶属于 StackOverflow