当前位置: 首页 > 知识库问答 >
问题:

JAXB编译器将xs:boolean绑定到Java boolean,而不是布尔包装类

百里沛
2023-03-14

我使用jaxb2-maven-plugin ver1.5生成Java类从XSD在我的项目。我的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类后,我收到布尔值的免费文件夹,但我需要布尔值。我不能编辑XSD,因为它是公开的。有人知道如何在不改变方案的情况下解决这个问题吗?

共有2个答案

上官霄
2023-03-14

布尔类型的原因是,您将字段免费的定义为非可选的,使用minOccurs=1JAXB总是使用基元类型创建字段,因为它不能为空,只需尝试使用minOccurs=0,您会看到区别。

要控制这种行为,请使用

冯开诚
2023-03-14

jaxb2-maven-plugin版本1.5已经过时。更新到最新,看看你是否还有这个问题。

<dependency>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>jaxb2-maven-plugin</artifactId>
    <version>2.3</version>
</dependency>
 类似资料:
  • 问题内容: 我正在将项目从JAXB 1.0迁移到JAXB 2.1,并且数据类型映射存在问题。 我正在使用Ant xjc 绑定编译器,并且已经成功配置了全局绑定,例如(例如) xs:date 映射到 java.util.Calendar 。 但是我得到了生成的方法,这些方法可以返回,而我却想要。 这是复杂的类型: 生成的类如下所示: 问题是,尽管装箱可以工作,但是如果提供的XML不包含的值,则该类的

  • 我正在将一个项目从JAXB 1.0迁移到JAXB 2.1,我在数据类型映射方面遇到了问题。 我正在使用蚂蚁xjc绑定编译器,并且我已经成功地配置了全局绑定,以便(例如)xs: date映射到java.util.日历。 然而,我得到的生成方法返回,而我想要。 这里是复杂类型: 生成的类看起来像这样: 问题是,虽然装箱可以工作,但如果提供的XML不包含的值,则类的布尔字段为null,而不是false。

  • 我正在从WSDL生成源代码。它生成包装器类型。我希望JAXB生成基本类型,而不是包装器。 在pom.xml 在我的WSDL文件中 在生成类中 我尝试设置bindingDirectory以强制使用原语而不是包装器。但jaxb2 maven插件2.5.0版本似乎不提供该选项。 aBindingConfiguration。xjb文件

  • 在我的 maven 项目中,我目前正在将我的 Java 代码与一些 Groovy 代码混合在一起。在这一点上,我主要使用Groovy来构建豆子。我的一些Java代码直接使用Groovy豆。 我这样配置Maven编译器插件:- 当我使用运行我的测试用例时,它工作得很好。 然而,当我通过右键单击测试文件直接从IntelliJ运行测试用例并运行它时,Groovy bean上会出现“找不到符号”错误。当我

  • 我使用Gradle在我的项目中生成jaxb类。一切都很好,但是在编组jaxb对象时,我们看到了不同的名称空间前缀,如ns1、ns2..随机出现在输出xml中。但是我们不希望这样,我们希望为每个名称空间指定特定的名称空间前缀。我检查了这里,发现链接15772478说我们必须有带有xmlns元素的package-info类,我怎么能对xjc绑定编译器说添加带有prifixes和namespaceURI

  • 使用jaxb2-maven-plugin和jaxb-xjc,在生成类时,jaxb创建带有get前缀的布尔访问器,但是我希望它使用java约定"is"创建。 这里是xsd: 创建的方法是; 但是我想要; 我试过了