3

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

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

- 对象对象[] {对象[][]}

 -[0] 对象 {object[]}
  -[0] 对象 {字符串}
  -[1] 对象 {字符串}

 -[1] 对象 {object[]}
  -[0] 对象 {字符串}
  -[1] 对象 {bool}

 -[2] 对象 {object[]}
  -[0] 对象 {字符串}
  -[1] 对象 {object[]}
   -[0] 对象 {object[][]}
    -[0] 对象[]
     -[0] 对象{字符串}
     -[1] 对象{字符串)
4

1 回答 1

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");
        }
    }
于 2010-01-25T16:55:26.637 回答