使用标准JAXB以两种不同的方式编组同一个对象?

时间:2012-02-22 22:25:07

标签: jaxb marshalling

我在Java中有一个Person类(用@XmlRootElement注释),有两个属性(名称,生日),我需要以两种不同的方式编组,生成两个不同的XML文件。

在第一个文件中,Person对象应该只包含name属性:

<Person>
    <name>John Doe</name>
</Person>

在第二个文件中,Person对象应包含所有属性。

<Person>
    <name>John Doe</name>
    <birthday>1980-01-01</birthday>
</Person>

有没有办法用JAXB实现这个目标?

此致 约亨

1 个答案:

答案 0 :(得分:1)

注意:我是EclipseLink JAXB (MOXy)主管,是JAXB 2 (JSR-222)专家组的成员。

您可以使用JAXB注释提供一种表示形式,并利用MOXy的外部绑定文档来提供替代表示。

用例1 - 表示之间的微小差异

默认情况下,MOXy的外部映射文档用于覆盖注释提供的元数据。这允许您调整版本之间的表示。以下是我给出的详细示例答案的链接:

用例2 - 表示之间的主要差异

MOXy的外部映射文档也可用于覆盖所有注释。当表示不相关时,这很有用。下面是一个示例的链接,我将相同的对象模型映射到Google和Yahoo天气服务:

了解更多信息