WSDL中的可选消息部分

mos*_*sch 14 soap wsdl

在我的wsdl:消息中,我有两个参数,firstname和lastname:

<message name="setName">
  <part name="firstname" type="xsd:string"></part>
  <part name="lastname" type="xsd:string"></part>
</message> 
Run Code Online (Sandbox Code Playgroud)

我想根据需要定义"firstname"部分,并将"lastname"部分定义为可选.我怎么做?

小智 18

在WSDL中,部件不能是可选的.他们总是需要的.如果需要可选部件,则必须创建一个引用XSD complexType的部件,然后该部件可以包含可选元素.

  • 例子?没有人对这个主题不熟悉可以理解你的意思 (3认同)

use*_*121 5

您可以将nullable添加到lastname,因此firstname是必需的:

<message name="setName">
    <part name="firstname" type="xsd:string"></part>
    <part name="lastname" xsi:nil="true" type="xsd:string"></part>
</message> 
Run Code Online (Sandbox Code Playgroud)

如果你这样做,你的肥皂体就像这样(空或填充姓氏):

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:user="http://www.example.com/MyService/">
   <soapenv:Header/>
   <soapenv:Body>
      <user:setName>
         <firstname>John</firstname>
         <lastname></lastname>
      </user:setName>
   </soapenv:Body>
</soapenv:Envelope>
Run Code Online (Sandbox Code Playgroud)

甚至没有姓氏:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:user="http://www.example.com/MyService/">
   <soapenv:Header/>
   <soapenv:Body>
      <user:setName>
         <firstname>John</firstname>
      </user:setName>
   </soapenv:Body>
</soapenv:Envelope>
Run Code Online (Sandbox Code Playgroud)