我使用的是jdk1.6和eclipselink-2.3.2.v20111125-r10461
我的XML类似于:
<alpha>
<beta>
<omega>abcd</omega>
<gamma>
<delta>001</delta>
<delta>002</delta>
<delta>003</delta>
</gamma>
</beta>
</alpha>
<alpha>
<beta>
<omega>abcd</omega>
<gamma>
<delta>001</delta>
<delta>002</delta>
<delta>003</delta>
</gamma>
</beta>
</alpha>
我的带注释的bean看起来像:
@XmlRootElement(name = "alpha")
@XmlAccessorType(XmlAccessType.FIELD)
public Class Alpha {
@XmlPath("beta/omega/text()")
private String omegaValue;
@XmlElement(name = "delta")
@XmlElementWrapper(name = "gamma")
private List<String> deltaList;
public String getOmegaValue() {
return omegaValue;
}
public void setOmegaValue(String omegaValue) {
this.omegaValue = omegaValue;
}
public List<String> getDeltaList() {
return deltaList;
}
public void setDeltaList (List<String> deltaList ) {
this.deltaList = deltaList ;
}
}
在我的测试代码中,我执行以下操作来检查列表,但它是空的。
@XmlRootElement(name = "alpha")
@XmlAccessorType(XmlAccessType.FIELD)
public Class Alpha {
@XmlPath("beta/omega/text()")
private String omegaValue;
@XmlElement(name = "delta")
@XmlElementWrapper(name = "gamma")
private List<String> deltaList;
public String getOmegaValue() {
return omegaValue;
}
public void setOmegaValue(String omegaValue) {
this.omegaValue = omegaValue;
}
public List<String> getDeltaList() {
return deltaList;
}
public void setDeltaList (List<String> deltaList ) {
this.deltaList = deltaList ;
}
}
我在这里做错了什么? omegaValue工作正常。请帮忙,谢谢。
答案 0 :(得分:2)
deltaList
属性的映射缺少测试版级别。您可以使用@XmlPath
注释并执行以下操作:
@XmlPath("beta/gamma/delta/text()")
private List<String> deltaList;
了解更多信息