我正在试图弄清楚我需要将哪些位插在一起以将JAXB POJO封送到XOM文档,反之亦然。
JAXB Marshaller
接口的marshal方法采用各种目标,例如Result
,但它们都没有XOM适配器。令人生畏的是,XOM API确实有XOMResult
实现,但是它受到包保护,并且只在内部使用。
还有其他方法可以在不使用字符串或字节缓冲区的情况下编组到XOM或从XOM编组吗?
答案 0 :(得分:1)
我不确定你是否对使用DOM来实现这一目标不利,因为你可能正在使用XOM来避免使用DOM!无论如何,使用如here所述的JAXB Binder以及XOM的DOMConverter,您可以从JAXB到DOM到XOM,而无需使用String或字节缓冲区。
XOM没有实用程序从SAX ContentHandler创建XOM文档太糟糕了,因为JAXB还支持编组到该对象的实例。 XOM有SAXConverter可以从Document创建ContentHandler,但不是相反。
这是XOM-interest邮件列表中与此相关的主题。
答案 1 :(得分:1)
我找到了旧项目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结合使用。
可能这有帮助吗?