2017-12-11 3 views
0

クックコンピューティングライブラリを使用してXML-RPC経由でC#.NETのオブジェクト配列にXMLの構造体の配列を転送/マップする方法はありますか?例えば.NETのC#でCookComputingによってXML-RPCを使用してXMLの構造体の配列をオブジェクトの配列(IList/IEnumerable)にマップするにはどうすればよいですか?

、私は、XML-RPCサーバーに、この配列を送りたい:

<?xml version="1.0"?> 
<methodCall> 
    <methodName>mynamespace.methodName</methodName> 
    <params> 
     <param> 
     <value> 
     <array> 
      <data> 
      <struct> 
       <member> 
        <name>param1String</name> 
        <value><string>ABCDEFGH</string></value> 
       </member> 
       <member> 
        <name>param2Int</name> 
        <value><i4>123456</i4></value> 
       </member> 
      </struct> 
      <struct> 
       <member> 
        <name>param1String</name> 
        <value><string>QWERTY</string></value> 
       </member> 
       <member> 
        <name>param2Int</name> 
        <value><i4>987654</i4></value> 
       </member> 
      </struct> 
      </data> 
     </array> 
     </value> 
     </param> 
    </params> 
</methodCall> 

はさらに、私はこの要求を処理するには、次のサーバーの方法があります。

[XmlRpcMethod("mynamespace.methodName")] 
    public void ProcessArrayOfObjects(Array[] myArray) 
    //public void ProcessArrayOfObjects(XmlRpcStruct[] myArray) 
    { 
     try 
     { 
      // ... would process, but myArray is empty 
     } 
     catch (Exception e) 
     { 
      logger.Error(e, "Processing array failed! Reason: {0}", e.Message); 
     } 
    } 

を私は3番目を使用していますXMLリクエストを処理するために、CookComputingによるXML-RPCライブラリを提供しています。 受け取ったXML入力をArray[]またはXmlRpcStruct[]、または具体的なクラスの配列にマッピングした後は、空の配列です。

また、、またはList<ConcreteObject>にマップしようとしましたが、削除したのは<array></array><data></data>タグでした。私はXML-RPC要求エラー(間違ったXML形式)を取得しました。

他に、CookComputingフレームワークで何ができますか?

答えて

0

簡単な答えはこれです: 私は<value></value>タグに私の<struct></struct>のそれぞれをラップする必要があります。

<?xml version="1.0"?> 
<methodCall> 
    <methodName>mynamespace.methodName</methodName> 
    <params> 
     <param> 
     <value> 
     <array> 
      <data> 
      <value> 
      <struct> 
       <member> 
        <name>param1String</name> 
        <value><string>ABCDEFGH</string></value> 
       </member> 
       <member> 
        <name>param2Int</name> 
        <value><i4>123456</i4></value> 
       </member> 
      </struct> 
      </value> 
      <value> 
      <struct> 
       <member> 
        <name>param1String</name> 
        <value><string>QWERTY</string></value> 
       </member> 
       <member> 
        <name>param2Int</name> 
        <value><i4>987654</i4></value> 
       </member> 
      </struct> 
      </value> 
      </data> 
     </array> 
     </value> 
     </param> 
    </params> 
</methodCall> 
関連する問題