JAXB:您是否必须指定要包含的每个字段?

时间:2014-03-15 23:45:49

标签: java jaxb marshalling

我有一个我想要编组的课程,这个课程用@XmlRootElement注释。当我编组它的一个实例时,JAXB创建一个除了根元素之外没有任何内容的XML。当我手动注释我的班级的每个字段时,所有字段都包括在内。看起来你必须注释每个字段才能将它包含在输出中。有人可以证实这一点吗?如果是这样,当您必须配置每个字段时,为什么JAXB被称为configuration-by-exception

不起作用:

@XmlRootElement
public class Person {
    private int name;
    private String email;
    private String tel;
    //constructor getters/setters
}

制作<?xml version="1.0" encoding="UTF-8" standalone="yes"?><person/>

以下示例包含输出中的所有字段。

@XmlRootElement
public class Person {
    @XmlElement private int name;
    @XmlElement private String email;
    @XmlElement private String tel;
    //constructor getters/setters
}

1 个答案:

答案 0 :(得分:1)

JAXB (JSR-222)实施根本不需要任何注释:

我怀疑你的getter / setter对有问题。您需要确保它们如下所示:

public int getName() {
    return name;
}

public void setName(int name) {
    this.name = name;
}

更新

  

我显然是深夜编码的受害者。生成时   getters / setters我只选择了getters而JAXB不喜欢   所有

默认情况下,JAXB不会仅使用映射的getter来处理属性。只需使用getter,您需要使用@XmlElement进行注释。

@XmlElement
public int getName() {
    return name;
}