jaxb xmlelement使用自定义属性进行编组

时间:2012-08-01 15:14:25

标签: java jaxb

尝试将我的类映射到xml并添加自定义属性。

public class MyXmlMappings  {
    @XmlElement
    protected String username;
    @XmlElement
    protected String password;
    @XmlElement
    protected Integer age;
}
编组到xml之后的

看起来像这样:

<myXmlMappings>
<username/>
<password/>
<age/>
</myXmlMappings>

我需要像这样的xml:

<myXmlMappings>
<username type="String" defaultValue="hello" />
<password type="String" defaultValue="asdf" />
<age type="Integer" defaultValue="25" />
</myXmlMappings>

如您所见,我添加了type和defaultValue属性。如何将它们添加到myXmlMappings类以便在编组后显示?

向myXmlMappings类添加额外字段是不可行的我想以某种方式使用注释。

2 个答案:

答案 0 :(得分:1)

XML表示

我建议使用以下XML表示法:

<myXmlMappings>
    <xmlMapping name="username" type="String" defaultValue="hello" />
    <xmlMapping name="password" type="String" defaultValue="asdf" />
    <xmlMapping name="age" type="Integer" defaultValue="25" />
</myXmlMappings>

Java模型

使用以下Java模型:

XmlMappings

@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class MyXmlMappings  {
    @XmlElement(name="xmlMapping")
    protected List<XmlMapping> xmlMappings;

}

XmlMapping

@XmlAccessorType(XmlAccessType.FIELD)
public class XmlMapping {
    @XmlAttribute
    protected String name;
    @XmlAttribute
    protected String type;
    @XmlAttribute
    protected String defaultValue;
}

答案 1 :(得分:1)

试试这个:


public class MyXmlMappings {

    @XmlPath("username/@type")
    protected String userType;
    @XmlPath("password/@type")
    protected String passwordType;
    @XmlPath("age/@type")
    protected String ageType;
    @XmlPath("username/@defaultValue")
    protected String userDefaultValue;
    @XmlPath("password/@defaultValue")
    protected String passwordDefaultValue;
    @XmlPath("age/@defaultValue")
    protected Integer ageDefaultValue;
    @XmlElement
    protected String username;
    @XmlElement
    protected String password;
    @XmlElement
    protected Integer age;
}