【发布时间】:2014-12-20 08:39:52
【问题描述】:
使用 JDK 1.7 附带的 JAXB/xjc (bin\xjc.exe)
这是我的 XSD 的片段:
<xs:complexType name="NameType">
<xs:sequence>
<xs:element name="Surname" type="xs:string" nillable="true" minOccurs="0" maxOccurs="1"/>
<xs:element name="Firstname" type="xs:string" nillable="true" minOccurs="0" maxOccurs="1"/>
<xs:element name="Middlename" type="xs:string" nillable="true" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
生成的类显示:
@XmlElementRef(name = "Surname", type = JAXBElement.class, required = false)
protected JAXBElement<String> surname;
public JAXBElement<String> getSurname() {
return surname;
}
public void setSurname(JAXBElement<String> value) {
this.surname = value;
}
我知道 JAXB 使用 JAXBElement 来允许 null,但这没有任何意义,因为任何声明为 String 的东西都可以设置为 null。
而且我没有更改 XSD 的选项,因为我的客户宁愿将现有的 XSD 留在生产环境中。
问题:我可以更改代码生成器来生成吗:
@XmlElementRef(name = "Surname", type = String.class, required = false)
protected String surname;
public String getSurname() {
return surname;
}
public void setSurname(String value) {
this.surname = value;
}
谢谢 乔尔
【问题讨论】: