我发现了一些非常奇怪的东西,而且可能微不足道。当您在 XSD 中定义一个具有 type 的 Elementxs:long
并且您没有设置minOccurs="0"
并且通过 JAXB 运行它时,生成的元素是 type long
。但是,当您minOccurs="0"
在 XSD 元素中设置时,结果元素的类型为Long
. long
注意和Long
DataType之间的区别
现在,随着我的工作,我做了一些if (thisVariable == null)
测试,自然long
不能为空。Long
能够。
*我想知道的是,这是 JAXB 中的一个错误导致结果变量之间存在这种差异,还是打算让这些结果变量以它们的方式出现?*
这是我用来测试的文件:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<xs:schema id="ReportRequestWrapper" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="ReportRequestWrapper">
<xs:complexType>
<xs:sequence>
<xs:element name="queryId" type="xs:long" minOccurs="0" />
<xs:element name="reportId" type="xs:long" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
queryId
结果reportId
如下:
public class ReportRequestWrapper {
protected Long queryId;
protected Long reportId;
如果我省略了 MinOccurs="0",
<xs:element name="queryId" type="xs:long" />
<xs:element name="reportId" type="xs:long" />
结果变成了
public class ReportRequestWrapper {
protected long queryId;
protected long reportId;
我只是觉得这很好奇,想要更多关于这个的信息。