这个问题以不同的形式被提出过,但我觉得还有进一步分类的空间。
我有一个包含两个元素定义的xsd。
这将生成:
这对我来说似乎非常奇怪。为什么在第一个案例中lastXDigits生成为JAXBElement类型,而在所有情况下字符串类型不足以满足要求?此外,除了名称之外,这两个元素的定义相同,为什么jaxb要将它们区别对待?
我正在使用来自jaxb 2.0.5的jaxb-xjc ant任务。
这看起来可疑,还是有充分的理由解释这些差异?
我有一个包含两个元素定义的xsd。
<xs:complexType name="elementA">
<xs:sequence>
<xs:element name="date" type="xs:string" minOccurs="0"/>
<xs:element name="lastXdigits" type="xs:string" nillable="true" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
这将生成:
protected String date;
@XmlElementRef(name = "lastXdigits", namespace = "http://xxxxxxx", type = JAXBElement.class)
protected JAXBElement<String> lastXDigits;
将xsd更改为:
<xs:element name="lastXdigits" type="xs:string" nillable="true" minOccurs="1"/>
导致结果如下:
protected String date;
@XmlElement(name = "lastXdigits", required = true, nillable = true)
protected String lastXDigits;
并使用:
<xs:element name="lastXdigits" type="xs:string" minOccurs="0"/>
结果是:
protected String date;
@XmlElement(name = "lastXdigits")
protected String lastXDigits;
这对我来说似乎非常奇怪。为什么在第一个案例中lastXDigits生成为JAXBElement类型,而在所有情况下字符串类型不足以满足要求?此外,除了名称之外,这两个元素的定义相同,为什么jaxb要将它们区别对待?
我正在使用来自jaxb 2.0.5的jaxb-xjc ant任务。
这看起来可疑,还是有充分的理由解释这些差异?