Как я могу сделать так, чтобы элемент с типом datetime и float был пустым в XSD? - PullRequest
0 голосов
/ 29 мая 2019

У меня есть 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".

...