Question

WSDL: to produce tag in SOAP file

below is part of current WSDL file:

<xsd:complexType name="issue">
    <xsd:sequence>
         <xsd:element name="payload" type="tns:payload" />
    </xsd:sequence>
</xsd:complexType>

<xsd:complexType name="payload">
    <xsd:sequence>
         <xsd:element name="data" type="tns:data" maxOccurs="unbounded" />
    </xsd:sequence>
</xsd:complexType>

<xsd:complexType name="data">
    <xsd:sequence>
        <xsd:element name="key">
            <xsd:simpleType>
                <xsd:restriction base="xsd:string" />
            </xsd:simpleType>
        </xsd:element>
        <xsd:element name="value">
            <xsd:simpleType>
                <xsd:restriction base="xsd:string" />
            </xsd:simpleType>
        </xsd:element>
    </xsd:sequence>
</xsd:complexType>

now the generated SOAP xml is:

<record name="payload" javaclass="com.wm.data.BasicData">
    <record name="data" javaclass="com.wm.data.BasicData">
      <value name="key">xx</value>
      <value name="value">xx</value>
    </record>
    <record name="data" javaclass="com.wm.data.BasicData">
      <value name="key">xx</value>
      <value name="value">xx</value>
    </record>
    <record name="data" javaclass="com.wm.data.BasicData">
      <value name="key">xx</value>
      <value name="value">xxCI/AFR-CN</value>
    </record>
</record>

but below SOAP is wanted: to add tag , how can I modify the WSDL, thank you: xxxxxxxxxxxxx--------------------------------------------xxxxxxxxxxxxxxxxxxxxxxxxxxx

  <record name="payload" javaclass="com.wm.data.BasicData">
    <array name="data" type="record" depth="1">
      <record javaclass="com.wm.data.BasicData">
        <value name="key">xxx</value>
        <value name="value">xx</value>
      </record>
      <record javaclass="com.wm.data.BasicData">
        <value name="key">xxx</value>
        <value name="value">xxx</value>
      </record>
      <record javaclass="com.wm.data.BasicData">
        <value name="key">xx</value>
        <value name="value">xx</value>
      </record>
    </array>
  </record>
Was it helpful?

Solution

Your question is a little confusing, but if you are trying to get an array of data objects, the problem looks like you added 'maxOccurs' in the wrong spot. If you add it to the sequence node, it should produce an array of data objects.

this:

<xsd:sequence>
     <xsd:element name="data" type="tns:data" maxOccurs="unbounded" />
</xsd:sequence>

should be:

<xsd:sequence minOccurs="0" maxOccurs="unbounded">
     <xsd:element name="data" type="tns:data"  />
</xsd:sequence>
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top