如何通过JAXB注释映射XML元素和属性?

时间:2011-05-01 23:57:22

标签: xml xml-serialization jaxb

如何将JAXB注释中的字段映射到元素和属性?我在JAXB中尝试定制我的模型时遇到了一些麻烦。这是我目前的模特:

Info.java

package com.rest.model;

public class Info {

    private String a;

    private String b;

    private String c;

    private String d;

    public Info() {

    }

    /* ... insert JavaBean getters/setters here */
}

InfoList.java

package com.rest.model;

public class InfoList {

    private List<Info> infos;

    public InfoList() {

    }

    /* ... insert JavaBean getters/setters here */
}

这序列化的内容如下:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<infos>
    <info>
        <a>HELLO</a>
        <b>WORLD</b>
        <c>OLLEH</c>
        <d>DLROW</d>
    </info>
</streams>

如何控制序列化的方式?我尝试过使用注释,但我只设法触发IllegalAnnotationException。我如何基本上采用这个模型,因为它是自动映射并在注释中表达?或者,如何更改Info类中要映射到XML属性的字段?

1 个答案:

答案 0 :(得分:2)

默认情况下,JAXB将在公共访问器上查找注释。如果您注释字段,您将看到您获得的例外。如果要注释字段 添加以下内容:

@XmlAccessorType(XmlAccessType.FIELD)
public class Foo {

    @XmlAttribute
    private String a;

}

有关示例,请参阅: