使用 JAXB 生成 Java 原始类型的 XML 架构类型未添加必需的内容

2024-01-12

我正在使用 JAXB(xjc 版本 2.2.4-2)从 XML 架构生成 Java 类。映射到 Java 原始数据类型的 XML 类型不会添加:

@XmlElement(required = true)

例如使用时:

<element name="userId" type="long"/>
<element name="userName" type="string"/> 

将导致:

//no annotation added here
protected long userId;
@XmlElement(required = true)
protected String userName;

有谁有解释为什么会发生这种情况?

这是否与您可以使用 xjc 设置的选项有关?


您不需要注释来显示 Java 类型的属性long是必需的,因为这是隐式的,因为原始值不能为空。类型的不可空必需元素xs:long映射到 Javalong,可选的或可空的映射到java.lang.Long(这允许null,代表缺席或xsi:nil作为适当的)。

一个元素是both选修的andnillable(奇怪,但 XML Schema 允许)将映射到JAXBElement<Long>区分缺席(anull JAXBElement) 和 nil (非空JAXBElement whose isNil()返回真)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 JAXB 生成 Java 原始类型的 XML 架构类型未添加必需的内容 的相关文章

随机推荐