2009-09-15 56 views
2

我想弄清楚我需要将哪些位插入到一起以将JAXB POJO编组为XOM文档,反之亦然。如何将JAXB对象封送到XOM?

JAXB Marshaller接口的编组方法有多种目标,如Result,但它们都没有XOM适配器。令人感到刺激的是,XOM API确实有一个XOMResult的实现,但它是受封装保护的,只能在内部使用。

有没有其他一些方法可以编组到/从XOM而不诉诸字符串或字节缓冲区?

回答

0

我不确定是否不利用DOM来实现这一点,因为您可能使用XOM来避免DOM!无论如何,使用描述为here的JAXB活页夹以及XOM的DOMConverter,您可以不使用字符串或字节缓冲区从JAXB到DOM到XOM。

XOM没有从SAX ContentHandler创建XOM文档的实用程序太糟糕了,因为JAXB也支持编组到该对象的实例。 XOM有一个SAXConverter,它可以从一个Document创建一个ContentHandler,但不是相反。

这是一个与XOM-interest邮件列表有关的线程。

+0

是的,从JAXB-> DOM-> XOM是我目前所坚持的,但它在我口中留下不好的味道。 – skaffman 2009-09-15 21:26:26

+0

我完全理解。也许这是一个通过创建丢失的转换器来创建XOM贡献的机会? ;) – laz 2009-09-16 02:49:40

1

我发现老项目nux

一个http://acs.lbl.gov/software/nux//api/nux/xom/pool/XOMUtil.html

jaxbMarshal/jaxbUnmarshal使用DOMConverter ;-(

b http://acs.lbl.gov/software/nux/api/nux/xom/io/StaxUtil.html ...还包括使用的StAX解析器XOM生成器的实现。而不是SAX解析器;再加上从底层XOM文档或片段读取的XMLStreamReader实现;以及其他工具。

StaxUtil.createXMLStreamReader(节点根) 构造并返回从基础XOM节点读取的StAX XMLStreamReader拉解析器实现;通常是文档或片段(子树);例如,当通过Unmarshaller递增地转换XQuery结果(可能与StreamingPathFilter结合使用)时,将XOM树有效转换为SOAP/AXIOM,JAXB 2,JiBX或XMLBeans是理想之选。

可能会有帮助吗?