我试图弄清楚我需要将哪些位插入在一起以将 JAXB POJO 编组到 XOM 文档,反之亦然。
JAXBMarshaller
接口的封送方法采用各种目标,例如Result
,但它们都没有 XOM 适配器。令人恼火的是,XOM API 确实有一个XOMResult
实现,但它是包保护的,并且只在内部使用。
有没有其他方法可以在不使用字符串或字节缓冲区的情况下编组到 XOM 或从 XOM 编组?
我不确定您是否反对使用 DOM 来完成此操作,因为您可能正在使用 XOM 来避免 DOM!无论如何,使用此处描述的 JAXB Binder以及 XOM 的DOMConverter,您可以在不使用字符串或字节缓冲区的情况下从 JAXB 到 DOM 到 XOM。
XOM 没有从 SAX ContentHandler 创建 XOM 文档的实用程序太糟糕了,因为 JAXB 还支持编组到该对象的实例。XOM 有一个SAXConverter可以从 Document 创建 ContentHandler,但反过来不行。
这是XOM-interest邮件列表上与此相关的一个线程。
我找到了旧项目nux:
http://acs.lbl.gov/software/nux//api/nux/xom/pool/XOMUtil.html _
jaxbMarshal/jaxbUnmarshal 使用 DOMConverter ;-(
湾。http://acs.lbl.gov/software/nux/api/nux/xom/io/StaxUtil.html ...还包括一个使用StAX解析器而不是SAX解析器的XOM Builder实现;加上从底层 XOM 文档或片段读取的 XMLStreamReader 实现;加上其他工具。
StaxUtil.createXMLStreamReader(Node root) 构造并返回从底层 XOM 节点读取的 StAX XMLStreamReader 拉解析器实现;通常是文档或片段(子树);将 XOM 树高效转换为 SOAP/AXIOM、JAXB 2、JiBX 或 XMLBeans 的理想选择,例如当通过 Unmarshaller 增量转换 XQuery 结果时,可能与 StreamingPathFilter 结合使用。
这可能有帮助吗?