JAX-B将字符串映射到JAXBElement <string> </string>

时间:2013-07-05 15:40:32

标签: java xml jaxb jax-ws

我正在尝试做一些应该相对简单的事情,在我只包含字符串的根元素中添加一个子类。但是在客户端,此对象具有JAXBElement映射而不是字符串。见下文:

public class Foo {
    protected Bar barObject;
}

public class Bar {
    @XmlElement(nillable = true)
    protected String barName;
}

生成的Bar bean看起来像这样。

public class Bar {
    @XmlElementRef(name = "barName", type = JAXBElement.class, required = false)
    protected JAXBElement<String> barString;
}

我确信这是一匹死马,但我没有在任何地方看到这种行为的明确解释。

1 个答案:

答案 0 :(得分:1)

如果相应的元素是JAXBElementnillalbe="true",则JAXB实现将生成类型为minOccurs-"0"的属性。这样它可以使两个州都往返。

<element name="barName" type="string" nillable="true" minOccurs="0"/>

您可以通过在minOccurs="1"上指定required标记来制作元素@XmlElement

@XmlElement(nillable = true, required=true)
protected String barName;