JAXB: изменить имя элемента XML из кода Java?

чтобы установить имя XML-элемента, я использую такие аннотации:

@XmlElement(name = "customer_id")
public String getId(){}

Я должен общаться с двумя различными веб-сервисами. Один expacts id элемента по имени customer_id но другие expacts идентификатор элемента . Я решил проблему, создав второй Customer класса с теми же атрибутами. Единственное отличие заключается в том, что он использует следующую аннотацию

@XmlElement(name = "id")
public String getId(){}

и имеет конструктор копирования, который копирует все атрибуты Customer1 to Customer2. Когда я общаюсь с первым веб-сервисом, я отправляю Customer1 объект и другой веб-сервис получает .

есть ли возможность использовать только один в любой вебсервис ожидает?

1 ответов


Примечание: Я EclipseLink JAXB (MOXy) ведущий и член JAXB 2 (JSR-222) группы экспертов.

вы можете использовать расширение внешнего документа сопоставления в MOXy JAXB, чтобы применить второе сопоставление к объектной модели. Этот документ сопоставления можно использовать для изменения метаданных, предоставляемых с помощью аннотаций, или полностью заменить он.

для подробного примера

в приведенном ниже примере одна объектная модель сопоставляется с результатами Google и Yahoo weather APIs: