我的XSD中有以下属性:
<xs:attribute name="fromFraction" type="xs:float" use="optional" default="0.0"/>
我从这个XSD生成类,并且属性创建为float
,然后我不能在没有此类的属性的情况下编组XML(据我所知,在这种情况下,它总是有一些值这将被编组)。
如何在绑定期间更改XSD以创建Float
类型,因此我可以在此字段中使用null(因此在编组时可以省略它)?
或许有一种更好的方法可以在结果XML不存在时从该结果中删除该属性?
答案 0 :(得分:1)
据此:http://reast.net/2009/08/jaxb-generating-primitive-type-getters/ 及其参考:http://docs.oracle.com/cd/E17802_01/webservices/webservices/docs/1.5/jaxb/vendorCustomizations.html#serializable
你应该把它添加到你的XSD:
<xs:annotation>
<xs:appinfo>
<jaxb:globalBindings>
<xjc:serializable uid="12343"/>
</jaxb:globalBindings>
</xs:appinfo>
</xs:annotation>
答案 1 :(得分:1)
我在用于生成类的 binding.xjb 文件中有以下行:
<jxb:globalBindings optionalProperty="primitive"/>
当我删除它时,生成的类包含正确的原始包装器,就像我想要的那样。