加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – JAXB Generation nillable = true

发布时间:2020-12-15 02:26:35 所属栏目:Java 来源:网络整理
导读:使用JAXB 2.2.4我使用以下绑定文件生成 Java代码: bindings xmlns="http://java.sun.com/xml/ns/jaxb" version="2.0"xmlns:xs="http://www.w3.org/2001/XMLSchema"globalBindings generateElementProperty="false"/globalBindings 不幸的是,生成的代码有一
使用JAXB 2.2.4我使用以下绑定文件生成 Java代码:

<bindings xmlns="http://java.sun.com/xml/ns/jaxb" version="2.0"
xmlns:xs="http://www.w3.org/2001/XMLSchema">

<globalBindings generateElementProperty="false">

</globalBindings>

不幸的是,生成的代码有一个nillable = true注释.请参阅以下示例:

@XmlElement(name = "ArtID",nillable = true)
protected STEBeitrag artID;

这是STEBeitrag的定义:

<xsd:complexType name="CT_Beitrag">
    <xsd:complexContent>
        <xsd:extension base="allgemein:CT_Objekt">
            <xsd:sequence>
                <xsd:element name="ArtID" type="daten:STE_Beitrag" minOccurs="0" maxOccurs="1" nillable="true"/></xsd:element>
            </xsd:sequence>
        </xsd:extension>
     </xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="STE_Beitrag" abstract="true">
    <xsd:simpleContent>
     <xsd:extension base="xsd:string"/>
   </xsd:simpleContent>
</xsd:complexType>

如果我没有在生成的CT_Beitrag对象中设置ArtID,则unmarshaller会生成类似的输出

<ns:ArtID xsi:nil="true"/>

元素ArtID具有抽象类型,因此该XML输出无效.

如何使用JAXB生成代码,忽略XmlElement注释中的nillable = true?
顺便说一下,架构不能改变.

解决方法

我没有解决方案,但这个问题在bug中解决了
http://java.net/jira/browse/JAXB-890 我希望这个问题能够得到解决.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读