对@XmlAnyElement无效

时间:2013-04-09 02:47:06

标签: jaxb jaxb2

我为JAXB创建了多个元素的通用类。

@XmlTransient
public abstract class Plural<S> {

    @XmlAnyElement(lax = true)
    private Collection<S> singulars;
}

使用以下课程

@XmlRootElement
public class Item {

    //@XmlValue // problem with xsi:nill and ""
    @XmlElement(nillable = true)
    private String name;
}

@XmlRootElement
public class Items extends Plural<Item> {
}

当我将name声明为@XmlEement(nilalble = true)时,它可以正常工作。但@XmlValuexsi:nil""之间存在问题。

有没有办法在nillable = true上设置@XmlAnyElement

更新---------------------------------------------- ------------

Item#name注释@XmlElement时,成功执行XML marshalls和unmarshalls。

<items xmlns="http://jinahya.googlecode.com/xml/bind/test">
    <item id="-4939700912221365683">
        <name xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
    </item>
    <item>
        <name>name</name>
    </item>
    <item>
        <name xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
    </item>
    <item id="-8544902644460968391">
        <name xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
    </item>
    <item id="525642804765733165">
        <name xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
    </item>
</items>

Item#name注释@XmlValue时,输出XML编组和解组,但在相等测试时失败。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<items xmlns="http://jinahya.googlecode.com/xml/bind/test">
    <item id="7812630870400466385">name</item>
    <item>name</item>
    <item id="-1067677982428177088"/>
    <item id="5609376399324841172">name</item>
    <item id="-4755856949417090129"/>
</items>

在每个xsi:nil元素上省略了item。因此Item#equals每个项目都失败了。 ""没有xsi:nill解析为空元素的每一个都来自null s。它只是@XmlValue的问题吗? @Blaise Doughan无论如何,我从你的博客条目中了解了@XmlAnyElement(lax = true)。感谢。

0 个答案:

没有答案