Замена XStream на JAXB в моем приложении - PullRequest
2 голосов
/ 03 декабря 2011

В настоящее время в приложении мы получаем XML-ответ SOAP с пространством имен, прикрепленным к каждому элементу.Я жестко запрограммировал в своем коде, что пространства имен игнорируются, потому что приложение хочет чистый xml.Но после тестирования это считается слабым решением, потому что пространство имен может измениться в будущем.Мне было рекомендовано использовать jaxb.Я использую xtream в настоящее время, потому что мы можем напрямую читать XML.Итак, я начал изучать Jaxb.Но Jaxb требует XSD.Я понял этот процесс, но я не уверен, как реализовать Jaxb в моем приложении, потому что я получаю XML-ответ.Итак, мой вопрос Можно ли заменить xtream на jaxb в этой ситуации?
спасибо

1 Ответ

5 голосов
/ 04 декабря 2011

Примечание: Я EclipseLink JAXB (MOXy) и являюсь членом J AXB 2 (JSR- 222) экспертная группа.

В настоящее время я использую xtream, потому что мы можем напрямую читать xml. Так что я начали изучать Jaxb. Но jaxb требует XSD.

Распространенным заблуждением является то, что JAXB требует XML-схему (это даже в XStream FAQ ). Правда в том, что JAXB был разработан для запуска с объектов и предоставляет возможность генерировать аннотированные объектные модели из XML-схем. Это очень полезно при работе с большими XML-схемами:

В настоящее время в приложении мы получаем XML-ответ SOAP с пространством имен. прикреплен к каждому элементу. Я жестко закодировал в своем коде, что пространства имен игнорируются, потому что приложение хочет чистый xml. Но после тестирования это считается слабым решением, потому что пространство имен может измениться в будущем.

JAXB имеет очень хорошую поддержку для отображения пространств имен. Это можно сделать на уровне пакета с @XmlSchema, на уровне класса с @XmlType или на уровне поля / свойства с @XmlAttribute / @XmlElement:

Я понял процесс, но я не уверен, как реализовать Jaxb в моем приложении, потому что я получаю ответ xml

Ниже приведена ссылка на статью, в которой сопоставляется одна и та же объектная модель с одним и тем же XML-документом с использованием JAXB и XStream. Это даст вам представление о том, как соотносятся некоторые концепции:

Еще одно замечание: JAXB относится к стандарту (JSR-222), а не к конкретной реализации. На самом деле есть несколько реализаций, включая:

  • EclipseLink MOXy
  • Метро (эталонная реализация)
  • Apache JaxMe
...