1

サービスから SOAP 応答を受け取ります。

<SOAP-ENV:Body>
    <ns1:getCurrencyListResponse>
        <getCurrencyListReturn SOAP-ENC:arrayType="ns2:Map[2]" xsi:type="SOAP-ENC:Array">
            <item xsi:type="ns2:Map">
                <item>
                    <key xsi:type="xsd:string">id</key>
                    <value xsi:type="xsd:string">18</value>
                </item>
                <item>
                    <key xsi:type="xsd:string">name</key>
                    <value xsi:type="xsd:string">USD</value>
                </item>
            </item>
            <item xsi:type="ns2:Map">
                <item>
                    <key xsi:type="xsd:string">id</key>
                    <value xsi:type="xsd:string">19</value>
                </item>
                <item>
                    <key xsi:type="xsd:string">name</key>
                    <value xsi:type="xsd:string">EUR</value>
                </item>
            </item>
        </getCurrencyListReturn>
    </ns1:getCurrencyListResponse>
</SOAP-ENV:Body>

ファイル wsdl で戻り値の型が指定されていません。このメッセージを C# で逆シリアル化するにはどうすればよいですか? 「アイテム」と「マップ」の数はわかりません。次の例のようになります。

[SoapType(Namespace = "http://xml.apache.org/xml-soap", TypeName = "Map")]
public class Map
{
    public item[] item;
}

public class item
{
    [SoapElement]
    public string key;

    [SoapElement]
    public string value;
}
4

1 に答える 1

2

プロジェクトでは、webservice への参照を追加する必要があります。
このようにして、webservice のラッパーが自動的に作成され、そのメソッドを呼び出して、ラッパー内のクラスを使用して応答を取得できます。
シリアライゼーションとデシリアライゼーションは透過的です。

于 2012-04-11T12:54:00.400 に答える