У меня есть wsdl с элементами типа «datetime», а другие с типом «float» (я опишу «datetime», но то же самое с «float»):
<xsd:element name="time" type="xsd:datetime" minOccurs="0"/>
Я хочучтобы этот элемент был пустым, вот так:
<time></time>
Теперь я не могу отправить этот элемент вот так.Я могу только отправить его с правильным значением или полностью удалить из сообщения.В противном случае я получаю Unmarshalling Error
.
Я пытался сделать это объединение (datetime и string с ограничением 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 (и я хочу, чтобы он был похож на другие элементы datetime: XMLGregorianCalendar):
public void setTime(String value) {
this.time = value;
}
Как мне заархивировать?
Почему «время» не просто устанавливается на null
, когда оно пустое?
Я не хочу устанавливать каждую дату и время с плавающей точкой на String,
PS Я не могу установить это значение nillable, потому что не могу ожидать, что элементы будут иметь xsi: nil = "true".