baj*_*ife 8 java xml stax xsd jaxb
我创建了一个XML模式(foo.xsd)并用于xjc
为JAXB创建我的绑定类.假设根元素是collection
,我正在写N个document
对象,它们是复杂的类型.
因为我打算写出大型XML文件,我使用Stax写出collection
根元素,而JAXB 使用编写文档子树Marshaller.marshal(JAXBElement, XMLEventWriter)
.这是jaxb非官方用户指南推荐的方法.
我的问题是,如何在编组时验证XML?如果我将模式绑定到JAXB marshaller(使用Marshaller.setSchema()
),我会得到验证错误,因为我只是编组一个子树(它抱怨它没有看到collection
根元素").我想我真正想做的是将模式绑定到的Stax XMLEventWriter
或类似的东西.
对这种整体方法的任何评论都会有所帮助.基本上我希望能够使用JAXB
来编组和解组大型XML文档而不会耗尽内存,所以如果有更好的方法可以让我知道.