Несколько отображений XML для того же объекта Java, использующего JAXB?

Примечание: Редактирование этого для перефразирования его вокруг JAXB в надежде на получение новых ответов. Я использую CXF, но он использует JAXB для отображений.

У меня есть модель POJO. Прямо сейчас мне отобразили его с помощью аннотаций и использующий JAXB для извергания/читавшего XML. Однако это - только один формат XML, и я должен отобразить ту модель POJO на один из различных форматов XML в зависимости от сторонней системы, с которой я интегрируюсь (например, различные третьи стороны, все имеют понятие о "человеке", но отображают его по-другому). Я прочитал все учебное руководство JAXB, но все центрируется вокруг аннотаций. Там некоторый внешний путь состоит в том, чтобы отобразить классы, таким образом, я могу чтение-запись несколько отображений, где я выбираю отображение для использования в какой-либо данной точке (т.е. Я знаю, что извергаю "человека" к Foo Inc., так используйте отображение нечто)?

Править: Я просто нашел что-то названным JAXBIntroductions, который мог бы сделать задание. http://community.jboss.org/wiki/JAXBIntroductions

5
задан Chris Kessel 23 February 2010 в 18:23
поделиться

3 ответа

Вы можете использовать XStream для этого. вы можете работать без аннотаций вот так:

XStream xstream = new XStream();
XStream xstream = new XStream(new DomDriver());
xstream.alias("person", Person.class);
xstream.alias("phonenumber", PhoneNumber.class);

надеюсь, это поможет

EDIT: создайте другой экземпляр XStream для другого вывода

Person demo = new Person("Chris");

XStream xStream = new XStream();
xStream.alias("person", Person.class);
System.out.println(xStream.toXML(demo));

XStream xStream2 = new XStream();
xStream2.alias("dev", Person.class);
System.out.println(xStream2.toXML(demo));

вывод:

<person>
  <name>Chris</name>
</person>
<dev>
  <name>Chris</name>
</dev>
0
ответ дан 15 December 2019 в 00:59
поделиться

вы можете попробовать http://code.google.com/p/jlibs/wiki/SAX2JavaBinding

Это также основано на аннотациях . но аннотаций нет в вашем POJO.

0
ответ дан 15 December 2019 в 00:59
поделиться

Если вы используете EclipseLink JAXB (MOXy), вы можете воспользоваться функцией внешнего сопоставления, чтобы применить множество XML-представлений к вашим POJO.

Кроме того, поскольку отображение MOXy основано на XPath, вы можете сопоставить свои POJO с широким спектром XML-схем.

4
ответ дан 15 December 2019 в 00:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: