我有wsdl,其元素的类型为“ datetime”,其他元素的类型为“ float”(我将描述“ datetime”,但与“ float”相同):
<xsd:element name="time" type="xsd:datetime" minOccurs="0"/>
我希望像下面这样允许该元素为空:
<time></time>
现在我不能像这样发送此元素。我只能以有效值发送它,也可以从消息中完全删除它。否则我会得到Unmarshalling Error
。
我试图使它成为一个联合(日期时间和限制为value=""
的字符串):
<xsd:simpleType name="empty_string">
<xsd:restriction base="xsd:string">
<xsd:enumeration value=""/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="datetime_or_empty">
<xsd:union memberTypes="xsd:dateTime log:empty_string"/>
</xsd:simpleType>
然后是我的元素:
<xsd:element name="time" type="log:datetime_or_empty" minOccurs="0"/>
问题在于,在我生成的代码中,此元素的类型为String(我希望它与其他日期时间元素一样:XMLGregorianCalendar):
public void setTime(String value) {
this.time = value;
}
如何存档?
为什么空的时间不只是设置为null
?
我不想设置每个日期时间并浮动为String。
P.S。我不能将此设置为nillable,因为我不能期望元素具有xsi:nil =“ true”。