需要使用其自己的属性重命名XML Element

时间:2016-02-03 09:58:52

标签: java xml jaxb moxy

我知道我们可以使用@XMLRootElement注释来设置我们希望在使用JAXB进行对象到xml转换后在XML中出现的名称,但我正在研究如何使用一个XML元素重命名XML元素自己的属性,如POJO

class Field
{
    String fieldName;
    String fieldValue;

    //getter/setter
}

使用JAXB对象进行xml转换后,而不是

<Field>
     <fieldName>FirstName</fieldName>
     <fieldValue>Rahul</fieldValue>
</Field

我需要将上面的xml格式化为

<FirstName>Rahul</FirstName> 

我知道如果我将 FirstName 声明为String,我可以简单地解决这个问题,但我需要按照上面的说明进行操作。

2 个答案:

答案 0 :(得分:1)

如果您使用的是MOXy / Eclipselink,则可以使用@XmlVariableNode注释。您需要在包含Field的对象上指定它(如果Field是根,那么我担心@XmlVariableNode将无法帮助)。例如:

class Field {
    @XmlTransient
    String fieldName;
    @XmlValue
    String fieldValue;
}

class Holder {
    @XmlVariableNode("fieldName")
    Field field;
}

请注意@XmlVariableNode是一个特定于MOXy的注释。它似乎从2.6版本开始可用。

答案 1 :(得分:0)

是的,您可以通过使用@JsonProperty(...)对其进行注释来设置属性的名称,就像您希望它们一样。

在你的罐头里你可以做如下的事情:

class Field
{
    @JsonProperty("FirstName")
    String fieldName;
    String fieldValue;

    /* Getter-Setters */
}