3

我在我的项目中使用 jaxb2-maven-plugin 1.5 版从 XSD 生成 Java 类。我的 XSD 看起来像:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="ClientRQ">
    <xs:complexType>
      <xs:sequence>	  
        <xs:element type="xs:string" name="ClientID" minOccurs="1" maxOccurs="1"/>
        <xs:element type="xs:boolean" name="Complimentary" minOccurs="1" maxOccurs="1"/> 
      </xs:sequence>
      <xs:attribute type="xs:string" name="Version"/>
      <xs:attribute type="xs:dateTime" name="TimeStamp"/>
    </xs:complexType>
  </xs:element>
</xs:schema>

在反序列化为 Java 类后,我收到boolean 免费字段,但我需要Boolean我不能编辑 XSD,因为它是公开的。有谁知道如何在不改变方案的情况下解决这个问题?

4

2 回答 2

1

类型的原因boolean是您将字段定义Complimentary为非可选的,minOccurs=1JAXB 总是使用原始类型创建字段,因为它不能为空,只需尝试使用minOccurs=0,您就会看到不同之处。

要控制此行为<jxb:globalBindings optionalProperty="wrapper">,请在您的绑定文档中使用。

于 2018-08-02T07:59:23.997 回答
1

jaxb2-maven-plugin1.5 版太旧了。更新到最新版本,看看你是否还有这个问题。

<dependency>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>jaxb2-maven-plugin</artifactId>
    <version>2.3</version>
</dependency>
于 2016-09-22T14:30:41.723 回答