我有一个我想要编组的课程,这个课程用@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
}
答案 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;
}