Как мне упаковать объект JAXB в XOM? - PullRequest
3 голосов
/ 15 сентября 2009

Я пытаюсь выяснить, какие биты мне нужно соединить, чтобы объединить JAXB POJO в документ XOM и наоборот.

Методы маршала интерфейса JAXB Marshaller имеют различные цели, например Result, но ни у одного из них нет адаптера XOM. Раздражает, что XOM API имеет реализацию XOMResult, но он защищен пакетами и используется только для внутреннего использования.

Есть ли какой-нибудь другой способ, которым я могу маршалировать в / из XOM, не прибегая к строковым или байтовым буферам?

Ответы [ 2 ]

1 голос
/ 24 ноября 2010

Я нашел старый проект nux :

a 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 ... также включает реализацию XOM Builder, в которой вместо анализатора SAX используется синтаксический анализатор StAX; плюс чтение реализации XMLStreamReader из базового XOM-документа или фрагмента; плюс другие инструменты.

StaxUtil.createXMLStreamReader (корневой узел) Создает и возвращает реализацию синтаксического анализатора извлечения StAX XMLStreamReader, которая читает из базового узла XOM; как правило, документ или фрагмент (поддерево); Идеально подходит для эффективного преобразования дерева XOM в SOAP / AXIOM, JAXB 2, JiBX или XMLBeans, например, при постепенном преобразовании результатов XQuery через Unmarshaller, возможно, в сочетании с StreamingPathFilter.

Может быть, это может помочь?

1 голос
/ 15 сентября 2009

Я не уверен, что вы против использования DOM для достижения этой цели, так как вы, вероятно, используете XOM, чтобы избежать DOM! В любом случае, используя JAXB Binder, как описано здесь вместе с XOM DOMConverter , вы можете перейти от JAXB к DOM к XOM без использования String или байтового буфера.

Очень плохо, что у XOM нет утилиты для создания XOM-документа из SAX ContentHandler, поскольку JAXB также поддерживает маршалинг для экземпляра этого объекта. XOM имеет SAXConverter , который может создавать ContentHandler из документа, но не наоборот.

Вот ветка, относящаяся к этому в списке рассылки XOM-интереса .

...