使用空嵌套列表解组自封闭标记

时间:2014-12-13 01:57:02

标签: java xml jaxb unmarshalling

我无法正确注释我的类,以便自闭合标记使类创建一个空列表。换句话说,该列表根本没有在XML中指定。

对于我的问题,我将参考以下两个示例类:

@XmlRootElement(name="a")
public class A {
    @XmlElement
    List<B> bs;
}

@XmlRootElement(name="b")
public class B {
    @XmlValue
    String v;
}

这个XML解组很好:

<a>
    <b>One</b>
    <b>Two</b>
    <b>Three</b>
</a>

第二个XML示例也正确地解组了预期的空列表:

<a>
    <b/>
</a>

然而,第三个例子导致XML根本没有解组。

<a/>

我想在解组第三个示例时看到的行为与使用空列表初始化类的第二个示例相同。这可能是使用JAXB,还是我试图做一些面对定义行为的东西?

1 个答案:

答案 0 :(得分:0)

标准方法(JAXB在从XML模式生成代码时也使用)

@XmlRootElement(name="a")
public class A {
    private List<B> bs;

    @XmlElement(name="b")
    public List<B> getBs(){
        if( bs == null ){
            bs = new ArrayList<>();
        }
        return bs;
    }
}

没有bs的设定者!