3

我正在使用 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>

我带注释的 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 ;
    }
}

在我的测试代码中,我执行以下操作来检查列表,但它是空的。

System.out.println(alphaInstance.getDeltaList().size());//returns 0!!
for (String deltaValue: alphaInstance.getDeltaList()) {//empty!!
    System.out.println(deltaValue);
}

在这里做错什么了吗?omegaValue 工作正常。请帮忙,谢谢。

4

1 回答 1

2

deltaList您的属性映射缺少 beta 级别。您可以使用@XmlPath注释并执行以下操作:

@XmlPath("beta/gamma/delta/text()")
private List<String> deltaList;

了解更多信息

于 2012-03-22T09:20:29.343 回答