Моя схема является:Тип элемента (длинный) без содержания
<xsd:element name="SetMonitor">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="period" type="xsd:long" />
<xsd:element name="refreshrate" type="xsd:long" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
И мой XML будет:
Случай 1.
<SetMonitor
xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:cb="http://schemas.cordys.com/1.0/coboc">
<period/>
<refreshrate/>
</SetMonitor>
ИЛИ Случай 2.
<SetMonitor
xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:cb="http://schemas.cordys.com/1.0/coboc">
<period>10</period>
<refreshrate>20</refreshrate>
</SetMonitor>
Для случай 2 нет никаких проблем. Но для случае 1 я получаю следующее сообщение об ошибке:
Caused by: org.xml.sax.SAXException: cvc-datatype-valid.1.2.1: '' is not a valid value for 'integer'.
org.xml.sax.SAXParseException; lineNumber: 6; columnNumber: 14; cvc-datatype-valid.1.2.1: '' is not a valid value for 'integer'.
Как я могу изменить WSDL-так, что он принимает и случая 1 и случая 2? Пожалуйста, помогите.
Я попытался модифицировать WSDL, как упоминалось выше (один сверху). Но я столкнулся с новой проблемой, что-то вроде 'Caused by: org.xml.sax.SAXException: cvc-complex-type.2.4.b: Содержимое элемента 'cb: SetMonitor' не завершено. Ожидается одно из {{http://schemas.cordys.com/1.0/coboc":period} '). org.xml.sax.SAXParseException; lineNumber: 4; columnNumber: 3; cvc-complex-type.2.4.b: Содержимое элемента 'cb: SetMonitor' не является полным. Предполагается одно из {{http://schemas.cordys.com/1.0/coboc":period} ". И если я поставлю moiOccurs = '0' для ** периода ** и ** refreshrate **, то это работает. – Ramesh
Это означает, что ' ' из xml не отображает ' '. –
Ramesh
'minOccurs =" 0 "' означает необязательный элемент (его можно опустить). 'nillable =" true "означает, что по-прежнему требуется иметь этот элемент в xml, но вы можете пометить его как' xsi: nil = "true" '(что-то вроде« null »на других языках) –