繁体   English   中英

Jaxb生成的类使用JAXBElement而不是指定的类型

[英]Jaxb generated class used JAXBElement instead of specified type

这个问题已被各种各样的问题提出来 - 但我觉得仍然有进一步编目的空间。

我有一个带有两个元素定义的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类型,为什么String类型在所有情况下都不够用? 另外,当jaxb除了名称之外的定义相同时,为什么jaxb应该区别对待这两个元素呢?

我正在使用jaxb 2.0.5中的jaxb-xjc ant任务。

这看起来是否可疑或是否有充分的理由来解决这些差异?

如果nillable="true"minOccurs="0" ,则不可能只用String表示值。 null意味着什么? 这是否意味着它是空的,或者它发生了0次? 但是我想这只是一个字符串有点没什么问题。

与空列表比较。 空列表肯定与空列表不同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM