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

Java 需要使用XML元素自己的属性之一重命名XML元素,java,xml,jaxb,moxy,Java,Xml,Jaxb,Moxy,我知道我们可以使用@XMLRootElement注释来设置名称,在使用JAXB进行对象到XML的转换之后,我们希望通过该名称在XML中显示这些内容,但我正在寻找方法,以便可以使用XML元素自己的属性(如POJO)重命名XML元素 class Field { String fieldName; String fieldValue; //getter/setter } 在使用JAXB将对象转换为xml之后,而不是 <Field> <fieldN

我知道我们可以使用
@XMLRootElement
注释来设置名称,在使用JAXB进行对象到XML的转换之后,我们希望通过该名称在XML中显示这些内容,但我正在寻找方法,以便可以使用XML元素自己的属性(如POJO)重命名XML元素

class Field
{
    String fieldName;
    String fieldValue;

    //getter/setter
}
在使用JAXB将对象转换为xml之后,而不是

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

名字
拉胡尔

是的,您可以通过使用
@JsonProperty(…)
注释属性来设置属性的名称,就像您希望它们出现一样

在您的can中,您可以执行以下操作:

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

    /* Getter-Setters */
}

如果您使用的是MOXy/Eclipselink,那么就有可用的
@XmlVariableNode
注释。您需要在保存字段的对象上指定它(如果字段是根,那么我担心
@XmlVariableNode
不会有帮助)。例如:

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

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

请注意,
@XmlVariableNode
是MOXy特定的注释。它似乎从2.6版开始提供。

是的,即使使用@XmlElement也可以很容易地做到这一点,但我想做的是略有不同。实际上,我不想给出任何硬代码名,而应该是一个运行时值。like fieldName的值在转换为xml时变为name Field。感谢您的回复,我想在这里添加的另一件事是,如果这个Field类还有一个属性,那么有没有办法将其用作RahulSee
@xmldattribute
注释:
@xmldattribute(name=“id”)等最终元素的属性字符串字段属性
class Field {
    @XmlTransient
    String fieldName;
    @XmlValue
    String fieldValue;
}

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