3

Apache Axis と SOAP 1.2 を使用して実装された外部 Web サービスに接続しています。Web サービスは、以下のようなギザギザのオブジェクト配列を返します。XML を見ると、 xsi:type="soapenc:Array" があります

C#2 と C#3 でそれぞれこの配列を解析する最もクリーンで最良の方法は何でしょうか? (私は特に C#2 に興味があるので、C#3 のソリューションは興味のみを目的としています。)

- オブジェクト オブジェクト[] {オブジェクト[][]}

 -[0] オブジェクト {オブジェクト[]}
  -[0] オブジェクト {文字列}
  -[1] オブジェクト {文字列}

 -[1] オブジェクト {オブジェクト[]}
  -[0] オブジェクト {文字列}
  -[1] オブジェクト {bool}

 -[2] オブジェクト {オブジェクト[]}
  -[0] オブジェクト {文字列}
  -[1] オブジェクト {オブジェクト[]}
   -[0] オブジェクト {オブジェクト[][]}
    -[0] オブジェクト[]
     -[0] オブジェクト{文字列}
     -[1] オブジェクト{文字列)
4

1 に答える 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 に答える