Какая библиотека Java OXM самая лучшая?
Вопрос
Несмотря на то, что я некоторое время был разработчиком, мне посчастливилось избежать большой работы с XML.Итак, теперь у меня есть проект, в котором я должен взаимодействовать с некоторыми веб-сервисами, и я хотел бы использовать какое-нибудь решение для сопоставления объекта с XML.
Единственный, о ком я знаю, - это JAXB.Это лучшее, что можно предпринять?Есть ли какие-либо другие рекомендации?
Одна загвоздка - я застрял на использовании Java 1.4, поэтому ничего не могу сделать с аннотациями.
Решение
Если вы вызываете веб-сервис с WSDL, JAXB - абсолютно лучший вариант. Взгляните на wsimport, и через 10 минут все будет готово.
Я не думаю, что JAXB 2.0 будет возможен на Java 1.4. Возможно, вам придется использовать Axis вместо этого:
java -cp axis-1.4.jar;commons-logging-1.1.jar;commons-discovery-0.2.jar;jaxrpc-1.1.jar;saaj-1.1.jar;wsdl4j-1.4.jar;activation-1.1.jar;mail-1.4.jar org.apache.axis.wsdl.WSDL2Java http://someurl?WSDL
Это создаст схожие заглушки с JAXB.
Если у вас нет WSDL или XSD, вы всегда можете сгенерировать один .
Другие советы
JAXB - лучший выбор:
- Общедоступный API, включенный в Java SE 6
- Уровень привязки для JAX-WS (веб-сервисов)
- Связующий слой для JAX-RS (Rest)
- Может сохранить XML-информационный набор
- Несколько реализаций: Метро, Мокси, Джаксме, и т. д
EclipseLink JAXB (MOXy) это лучшая реализация:
MOXy - это реализация JAXB с расширениями
MOXy имеет внешний конфигурационный файл (основанный на аннотациях JAXB с расширениями).:
- http://bdoughan.blogspot.com/2010/12/extending-jaxb-representing-annotations.html
- http://wiki.eclipse.org/EclipseLink/Examples/MOXy/EclipseLink-OXM.XML
Имеет отображение на основе XPath для глубокого отображения:
- http://bdoughan.blogspot.com/2010/07/xpath-based-mapping.html
- http://bdoughan.blogspot.com/2011/03/map-to-element-based-on-attribute-value.html
- http://bdoughan.blogspot.com/2010/09/xpath-based-mapping-geocode-example.html
Предназначен для обработки объектов, отображенных ORM, включая поддержку двунаправленных связей:
Существует XStream . Кажется, я помню, что использовал это давным-давно, и это было хорошо. Не могу сказать, что у меня достаточно опыта, чтобы рекомендовать его за или против, но это стоит проверить как альтернативу.
JIBX - известен своей производительностью
JAXB2 - Простота использования
Castor - Простота использования
другие - XMLBean, Xstream