需要使用自己的属性之一重命名 XML 元素

Need to rename XML Element with one of its own properties

我知道我们可以使用 @XMLRootElement 注释来设置我们希望它在使用 JAXB 将对象转换为 xml 后出现在 XML 中的名称,但我正在寻找这样 XML 元素可以使用它自己的属性之一重命名,例如 POJO

class Field
{
    String fieldName;
    String fieldValue;

    //getter/setter
}

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

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

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

<FirstName>Rahul</FirstName> 

我知道如果我将 FirstName 声明为 String 就可以简单地得到它,但不知何故我需要按照上面解释的那样做。

是的,您可以通过使用 @JsonProperty(...).

注释来设置您希望它们显示的属性名称

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

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

    /* Getter-Setters */
}

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

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

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

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