JAXB:从Java代码更改XML元素的名称?

pun*_*uck 6 java xml jaxb

要设置XML元素的名称,我使用这样的注释:

@XmlElement(name = "customer_id")
public String getId(){}
Run Code Online (Sandbox Code Playgroud)

我必须与两个不同的Web服务进行通信.一个表达了一个名为id的元素,customer_id但另一个表达了要命名的id元素id.我通过创建Customer具有相同属性的第二个类来解决问题.唯一不同的是它使用以下注释

@XmlElement(name = "id")
public String getId(){}
Run Code Online (Sandbox Code Playgroud)

它有一个拷贝构造函数,其复制所有的属性Customer1Customer2.当我与第一个Web服务通信时,我发送一个Customer1对象,另一个Web服务获取一个Customer2对象.

是否有可能只使用一个Customer对象,但将id属性重命名为webservice所期望的任何内容?

bdo*_*han 5

注意: 我是EclipseLink JAXB(MOXy)的负责人,也是JAXB 2(JSR-222)专家组的成员.

您可以使用MOXy JAXB中的外部映射文档扩展来将第二个映射应用于对象模型.此映射文档可用于修改通过注释提供的元数据,或完全替换它.

有关详细示例

在下面的示例中,单个对象模型映射到Google和Yahoo天气API的结果: