【发布时间】:2011-07-01 12:39:34
【问题描述】:
使用 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,那么解组器会产生类似
的输出<ns:ArtID xsi:nil="true"/>
元素 ArtID 具有抽象类型,因此此 XML 输出无效。
如何使用 JAXB 生成在 XmlElement 注释中省略 nillable=true 的代码? 顺便说一句,架构不能更改。
【问题讨论】:
标签: java inheritance jaxb abstract