Как мне упаковать объект JAXB в XOM?

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

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

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

2 ответа

Решение

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

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

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

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

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

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

Другие вопросы по тегам