JAXB要求布尔值



我试图生成一个带有布尔元素的XSD文件,该元素总是必需的。当我使用XSD文件生成java类(使用JAXB)时,不需要该字段。

我尝试了以下版本:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:tns="http://com.my.example/test"
targetNamespace="http://com.my.example/test"
elementFormDefault="qualified">
<xs:complexType name="MyComplexElement">
<xs:sequence>
<xs:element name="MySimpleElement" type="xs:boolean" minOccurs="1" maxOccurs="1" nillable="false"/>
<xs:element name="MySimpleElement2" type="xs:boolean" minOccurs="1" maxOccurs="1" nillable="true"/>
</xs:sequence>
</xs:complexType>
</xs:schema>

这个XSD文件在Java类中生成了以下字段:

@XmlElement(name = "MySimpleElement")
protected boolean mySimpleElement;
@XmlElement(name = "MySimpleElement2", required = true, type = Boolean.class, nillable = true)
protected Boolean mySimpleElement2;

而我期望的是这样的:

@XmlElement(name = "MySimpleElement", required=true) // This one would be my preferred one
protected boolean mySimpleElement;
@XmlElement(name = "MySimpleElement2", required = true, type = Boolean.class, nillable = false)
protected Boolean mySimpleElement2;

我也尝试过从java类生成XSD文件,但我也没能做到。

注意:我使用org.codehaus.mojo。jaxb2-maven-plugin版本:2.5.0

类型为xs:boolean的xml元素在java中可以用原始数据类型boolean表示,因为boolean总是有一个值(truefalse) -它不能是null。因为它总是有一个值,所以不需要特别将它标记为生成xml元素所必需的。

类型为xs:boolean的xml元素不能用原始数据类型boolean表示,因为boolean不能为空。因此,它由Boolean对象表示。。因为它可以是空的,所以需要特别地将它标记为生成xml元素所必需的,即使它是null

最新更新