在编组期间将属性放在运行时

时间:2016-02-04 12:19:43

标签: java xml jaxb moxy

使用JAXB对现有POJO进行XML转换后,我得到XML:

<USER>
    <FIELDNAME>FirstName</FIELDNAME>
    <FIELDVALUE>Michael</FIELDVALUE>
    <FIELDID>001</FIELDID>
</USER>

但是,根据要求,它必须是:

<USER>
    <FIRSTNAME ID="001">Michael</FIRSTNAME>
</USER>

因此我将POJO修改为:

User.java

    @XmlAccessorType(XmlAccessType.FIELD)
    @XmlRootElement(name="USER")
    public class User 
    {
        @XmlVariableNode("fieldName")
        List<Field> field;
        //   getter/setter
    }

Field.java

    @XmlAccessorType(XmlAccessType.FIELD)
    public class Field 
    {
        @XmlTransient
        public String fieldName;
        @XmlValue
        public String fieldValue;
        //   getter/setter
    }

有点期待XML(如下所示),但不完全是:

<USER>
    <FIRSTNAME>Michael</FIRSTNAME>
</USER>

上面提到的场景太简单了,但除了 FIRSTNAME 之外,还有很多元素取决于具体情况。 现在,我应该如何以及如何获取 FIRSTNAME ID 属性。我需要声明ID属性或其他可以帮助我得到我想要的东西。

1 个答案:

答案 0 :(得分:0)

您可以使用@XmlAttribute。 您打算自动生成ID吗?

示例:

@XmlAttribute(name="ID")
private String id;