2010-01-25 6 views
3

Я подключаюсь к внешней веб-службе, которая реализована с использованием Apache Axis и SOAP 1.2. Веб-служба возвращает массив с неровными объектами, подобный приведенному ниже. Глядя на XML, у меня есть xsi: type = "soapenc: Array"Разбор массива в C#

Какой будет самый чистый/лучший метод разбора этого массива в 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) 
+0

Что (код) у вас есть? – 2010-01-25 16:09:30

+0

Что вы хотите разобрать ** на **? Вы упомянули xml - есть ли у вас данные примера с вашим желаемым результатом? –

ответ

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