Примечание: Редактирование этого для перефразирования его вокруг JAXB в надежде на получение новых ответов. Я использую CXF, но он использует JAXB для отображений.
У меня есть модель POJO. Прямо сейчас мне отобразили его с помощью аннотаций и использующий JAXB для извергания/читавшего XML. Однако это - только один формат XML, и я должен отобразить ту модель POJO на один из различных форматов XML в зависимости от сторонней системы, с которой я интегрируюсь (например, различные третьи стороны, все имеют понятие о "человеке", но отображают его по-другому). Я прочитал все учебное руководство JAXB, но все центрируется вокруг аннотаций. Там некоторый внешний путь состоит в том, чтобы отобразить классы, таким образом, я могу чтение-запись несколько отображений, где я выбираю отображение для использования в какой-либо данной точке (т.е. Я знаю, что извергаю "человека" к Foo Inc., так используйте отображение нечто)?
Править: Я просто нашел что-то названным JAXBIntroductions, который мог бы сделать задание. http://community.jboss.org/wiki/JAXBIntroductions
Вы можете использовать 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>
вы можете попробовать http://code.google.com/p/jlibs/wiki/SAX2JavaBinding
Это также основано на аннотациях . но аннотаций нет в вашем POJO.
Если вы используете EclipseLink JAXB (MOXy), вы можете воспользоваться функцией внешнего сопоставления, чтобы применить множество XML-представлений к вашим POJO.
Кроме того, поскольку отображение MOXy основано на XPath, вы можете сопоставить свои POJO с широким спектром XML-схем.