0

WSDL ファイルを作成していますが、動作しています。ただし、出力は私が見たいものとまったく同じではありません。したがって、次のような出力メッセージを定義しました。

<message name="serviceResponse">
  <part name="code" type="xsd:string"/>
  <part name="description" type="xsd:string"/>
  <part name="results" element="tns:myProperty"/>
</message>

<types> タグには、次のものがあります。

<xsd:element name="myProperty">
  <xsd:complexType>
    <xsd:sequence>
      <xsd:element name="name" type="xsd:string"/>
      <xsd:element name="description" type="xsd:string"/>
      <xsd:element name="id" type="xsd:int"/>
      <xsd:element name="date" type="xsd:date"/>
    </xsd:sequence>
  </xsd:complexType>
</xsd:element>

それに応じて、私は得ました:

<SOAP-ENV:serviceResponse>
  <code xsi:type="xsd:string">001</code>
  <description xsi:type="xsd:string">Successful</description>
  <results SOAP-ENC:arrayType="SOAP-ENC:Array[2]" xsi:type="SOAP-ENC:Array">
    <item SOAP-ENC:arrayType="xsd:ur-type[7]" xsi:type="SOAP-ENC:Array">
      <item xsi:type="xsd:string">John</item>
      <item xsi:type="xsd:string">Director</item>
      <item xsi:type="xsd:int">21</item>
      <item xsi:type="xsd:string">2012-10-16</item>
    </item>
    <item SOAP-ENC:arrayType="xsd:ur-type[7]" xsi:type="SOAP-ENC:Array">
      <item xsi:type="xsd:string">Smith</item>
      <item xsi:type="xsd:string">Programmer</item>
      <item xsi:type="xsd:int">88</item>
      <item xsi:type="xsd:string">2012-10-18</item>
    </item>
  </results>
</SOAP-ENV:serviceResponse></SOAP-ENV:Body>

「アイテム」の束ではなく、「結果」タグ内で次のようなものを取得することを期待していました。

<myProperty SOAP-ENC:arrayType="xsd:ur-type[7]" xsi:type="SOAP-ENC:Array">
  <name xsi:type="xsd:string">John</name>
  <description xsi:type="xsd:string">Director</description>
  <id xsi:type="xsd:int">21</id>
  <date xsi:type="xsd:string">2012-10-16</date>
</myProperty>
<myProperty SOAP-ENC:arrayType="xsd:ur-type[7]" xsi:type="SOAP-ENC:Array">
  <name xsi:type="xsd:string">Smith</name>
  <description xsi:type="xsd:string">Programmer</description>
  <id xsi:type="xsd:int">88</id>
  <date xsi:type="xsd:string">2012-10-18</date>
</myProperty>

誰でも光を当てることができますか?ありがとう

4

2 に答える 2

1

別の投稿を参照して問題を解決しました: WSDL list of complexType HOWTO- define, return from a service?

DTD 定義は必要ありません。とにかくおかげで。

私がやったことは少し異なります。「myProperty」という名前の要素を使用する代わりに、「myProperty」という名前で直接 complexType を定義しました。うまくいきました。

<xsd:complexType name="myProperty">
    <xsd:sequence>
        <xsd:element name="name" type="xsd:string"/>
        <xsd:element name="description" type="xsd:string"/>
        <xsd:element name="id" type="xsd:int"/>
        <xsd:element name="date" type="xsd:date"/>
    </xsd:sequence>
</xsd:complexType>

<xsd:element name="serviceResponse">
    <xsd:complexType>
        <xsd:sequence>
            <xsd:element maxOccurs="unbounded" minOccurs="0" name="myResult" nillable="true" type="tns:myProperty"/>
        </xsd:sequence>
    </xsd:complexType>
</xsd:element>

出力はまさに私が期待したものです:

<myProperty xsi:type="ns1:myProperty">
    <name xsi:type="xsd:string">Smith</name>
    <description xsi:type="xsd:string">Programmer</description>
    <id xsi:type="xsd:int">88</id>
    <date xsi:type="xsd:date">2012-10-18</date>
</myProperty>
于 2012-10-23T01:40:30.660 に答える
0

myProperty タグの DTD を正しく定義してください。

次のようなもの:

<!ELEMENT myProperty (name,description,id,date)>
<!ELEMENT name(#PCDATA)>
<!ELEMENT description(#PCDATA)>
<!ELEMENT id(#PCDATA)>
<!ELEMENT date(#PCDATA)> 
于 2012-10-18T08:31:19.113 に答える