如何在XSD中允许类型为'datetime'和'float'的元素为空

时间:2019-05-29 09:19:03

标签: java soap xsd wsdl wsdl2java

我有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”。

0 个答案:

没有答案