Java 如何在生成的JAXB类中构造XSD使其具有原语包装器而不是原语类型?

Java 如何在生成的JAXB类中构造XSD使其具有原语包装器而不是原语类型?,java,xml,xsd,jaxb,Java,Xml,Xsd,Jaxb,我的XSD中有以下属性: <xs:attribute name="fromFraction" type="xs:float" use="optional" default="0.0"/> 我从这个XSD生成类,属性被创建为float,然后如果没有这个类中的属性,我就无法对XML进行封送(据我所知,在这种情况下,它将始终具有一些值,这些值将被封送) 如何在绑定期间更改XSD以创建Float类型,以便在此字段中具有null(以便在编组期间可以忽略) 或者,如果结果XML中不存在此属

我的XSD中有以下属性:

<xs:attribute name="fromFraction" type="xs:float" use="optional" default="0.0"/>

我从这个XSD生成类,属性被创建为
float
,然后如果没有这个类中的属性,我就无法对XML进行封送(据我所知,在这种情况下,它将始终具有一些值,这些值将被封送)

如何在绑定期间更改XSD以创建
Float
类型
,以便在此字段中具有null(以便在编组期间可以忽略)

或者,如果结果XML中不存在此属性,可能有更好的方法将其删除?

根据以下内容: 及其参考:

您应该将其添加到XSD中:

<xs:annotation>
   <xs:appinfo>
      <jaxb:globalBindings>
          <xjc:serializable uid="12343"/>
      </jaxb:globalBindings>
   </xs:appinfo>
</xs:annotation>

我在binding.xjb文件中有下面一行代码,用于生成类:

<jxb:globalBindings optionalProperty="primitive"/>


当我删除它时,生成的类包含正确的原语包装,正如我所希望的那样。

您看到了吗?似乎有相反的问题。@daniu-当然,区别在于他有一个元素,而不是属性。我尝试了,但无法在属性上设置minOccurs,但需要父元素。但它不必有这个特殊的属性。所以我认为情况并非完全如此。@dsp\u user-在JAXB类中,当字段类型为原始包装器(类似于Float而不是Float)并且设置为null时,属性在封送的XML中根本不存在。这就是我所期望的结果。您所说的“我不能在没有此属性的情况下封送XML…”是什么意思?如果您没有显式地设置属性的值,那么Java会将其设置为类型的默认值(在您的情况下为0.0,并将进行封送处理)。也许您可以向我们展示一些代码,我建议您可以使用XmlAdapter,但它不能与float或float(它需要字符串)一起工作。因此,如果您可以使用字符串而不是浮点(当然,字符串仍将存储浮点),那么您可以这样做。我不会加载第一个链接。你能解释一下序列化是如何与我的类型问题联系在一起的吗?第一个链接解释了为什么要从
jaxb:globalBindings
中删除该属性。你确定找到了解决我问题的方法吗?因为在我看来,这个问题基本上是关于getter/setter的,而参数类型已经是原始包装器了,这是我无法实现的。