【发布时间】:2011-01-29 02:14:28
【问题描述】:
我创建了一个 XML 模式 (foo.xsd) 并使用 xjc 为 JAXB 创建绑定类。假设根元素是 collection,我正在编写 N 个 document 对象,它们是复杂类型。
因为我打算写出大型 XML 文件,所以我使用 Stax 写出 collection 根元素,并使用 JAXB 使用 Marshaller.marshal(JAXBElement, XMLEventWriter) 编组文档子树。这是jaxb's unofficial user's guide推荐的方法。
我的问题是,如何在编组时验证 XML?如果我将模式绑定到 JAXB 编组器(使用 Marshaller.setSchema()),我会收到验证错误,因为我只是编组一个子树(它抱怨它没有看到 collection 根元素“)。我想我真正想要什么要做的是将架构绑定到Stax XMLEventWriter 或类似的东西。
任何关于这种整体方法的 cmets 都会有所帮助。基本上我希望能够使用JAXB 来编组和解组大型 XML 文档而不会耗尽内存,所以如果有更好的方法可以让我知道。
【问题讨论】: