在C#中解析锯齿状数组

时间:2010-01-25 16:07:38

标签: c# jagged-arrays

我正在连接使用Apache Axis和SOAP 1.2实现的外部Web服务。 Web服务返回一个锯齿状的对象数组,如下所示。看看XML,我有xsi:type =“soapenc:Array”

分别在C#2和C#3中解析这个数组的最干净/最好的方法是什么? (我对C#2特别感兴趣,所以C#3解决方案只是感兴趣。)

- obj  object[] {object[][]}

 -[0]  object {object[]}
  -[0]  object {string}
  -[1]  object {string}

 -[1]  object {object[]}
  -[0]  object {string}
  -[1]  object {bool}

 -[2]  object {object[]}
  -[0]  object {string}
  -[1]  object {object[]}
   -[0]  object {object[][]}
    -[0] object[]
     -[0] object{string}
     -[1] object{string)

1 个答案:

答案 0 :(得分:1)

不确定什么是最佳做法,但这是你可以做到的一种方式。只需要测试对象是否是数组,如果是,则使用其可枚举接口。递归检查每个数组项。

    _array = new object[3];
    _result = new StringBuilder();

    //Populate array here

    foreach (object item in _array)
    {
         ParseObject(item);
    }


    private void ParseObject(object value)
    { 
        if (value.GetType().IsArray)
        {
            IEnumerable enumerable = value as IEnumerable;

            foreach (object item in enumerable)
            {                    
                ParseObject(item);
            }                
        }
        else
        {
            _result.Append(value.ToString() + "\n");
        }
    }