Ell*_*lis 9 java code-generation jaxb
这个问题已被各种各样的问题提出来 - 但我觉得仍然有进一步编目的空间.
我有一个带有两个元素定义的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>
Run Code Online (Sandbox Code Playgroud)
这会产生:
protected String date;
@XmlElementRef(name = "lastXdigits", namespace = "http://xxxxxxx", type = JAXBElement.class)
protected JAXBElement<String> lastXDigits;
Run Code Online (Sandbox Code Playgroud)
将xsd更改为:
<xs:element name="lastXdigits" type="xs:string" nillable="true" minOccurs="1"/>
Run Code Online (Sandbox Code Playgroud)
结果是:
protected String date;
@XmlElement(name = "lastXdigits", required = true, nillable = true)
protected String lastXDigits;
Run Code Online (Sandbox Code Playgroud)
和使用:
<xs:element name="lastXdigits" type="xs:string" minOccurs="0"/>
Run Code Online (Sandbox Code Playgroud)
结果是:
protected String date;
@XmlElement(name = "lastXdigits")
protected String lastXDigits;
Run Code Online (Sandbox Code Playgroud)
这对我来说似乎很奇怪.为什么在第一种情况下将lastXDigits生成为JAXBElement类型,为什么String类型在所有情况下都不够用?另外,当jaxb除了名称之外的定义相同时,为什么jaxb应该区别对待这两个元素呢?
我正在使用jaxb 2.0.5中的jaxb-xjc ant任务.
这看起来是否可疑或是否有充分的理由来解决这些差异?
如果nillable="true"与minOccurs="0"它一起是不可能只用a表示值String.什么null意思?这是否意味着它是空的,或者它发生了0次?但是我想这只是一个字符串有点没什么问题.
与空列表比较.空列表肯定与空列表不同.
| 归档时间: |
|
| 查看次数: |
6046 次 |
| 最近记录: |