Как мне упаковать объект 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.
Может быть, это может помочь?