简体   繁体   English

如何通过.NET C#中的CookComputing使用XML-RPC将结构的数组从XML映射到对象的数组(IList / IEnumerable)?

[英]How do I map array of structs from XML to Array (IList/IEnumerable) of objects using XML-RPC by CookComputing in .NET C#?

Is there a way to transfer/map an array of structs (in XML) to an array of objects in C# .NET via XML-RPC using cook-computing library ? 有没有一种方法可以使用Cook-Computing库通过XML-RPC将结构数组(以XML格式)传输/映射到C#.NET中的对象数组?

For instance, I want to send this array to XML-RPC server: 例如,我想将此数组发送到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>

furthermore, I have the following server method to process this request: 此外,我具有以下服务器方法来处理此请求:

    [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);
        }
    }

I am using 3rd party XML-RPC library by CookComputing in order to process XML requests. 我正在使用CookComputing的第三方XML-RPC库来处理XML请求。 All I get after mapping the received XML input to Array[] , or XmlRpcStruct[] , or even array of concrete classes, is an empty array. 将收到的XML输入映射到Array[]XmlRpcStruct[]或什至是具体类的数组后,我得到的只是一个空数组。

I also tried to map it to a List<XmlRpcStruct> , or List<ConcreteObject> , while removed <array></array> and <data></data> tags. 我还尝试将其映射到List<XmlRpcStruct>List<ConcreteObject> ,同时删除了<array></array><data></data>标签。 I got XML-RPC request error (wrong XML format). 我收到XML-RPC请求错误(错误的XML格式)。

What else can I do with CookComputing framework ? CookComputing框架还能做什么?

The simple answer is this: I need to wrap each of my <struct></struct> to a <value></value> tag: 简单的答案是这样的:我需要将每个<struct></struct>包装到一个<value></value>标记中:

<?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>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM