2011-01-27 2 views
0

В результате Handler вызова HTTPService я назначил повторяющийся узел массиву. Внутри этого повторяющегося узла есть другие узлы, которые иногда повторяются, а иногда нет. Например, здесь параметр повторяется внутри опций.arraycollection с повторными узлами

<response> 
    <options> 
     <option> <var1> part1 </var1> <var2> part2 </var2> </option> 
     <option> <var1> part1 </var1> <var2> part2 </var2> </option> 
    </options> 
    <options>.... 
</response> 

И иногда это не повторяется, вот так.

<response> 
     <options> 
      <option> <var1> part1 </var1> <var2> part2 </var2> </option> 
     </options> 
     <options>.... 
</response> 

Я столкнулся с ошибками действий в моем цикле for. Как мне объяснить оба случая?

Вот мой цикл присваивающей объектов к стоимости объектов:

protected function xml_resultHandler(event:ResultEvent):void 
    { 
    var data:ArrayCollection = xml.lastResult.response.option; 
    var valueobjects:valueObject; 

    for each (var characteristic:Object in data) 
    { 
         valueobject = new valueobject; 
         valueobject.var1 = characteristic.option[0].var1; 
         valueobject.var2 = characteristic.option.var2; 
         datamodel.addItem(valueobject); 
        } 

}

В этом примере кода, присваивающих var1 сломается, если не будет несколько узлов вариант, и var2 сломается, если есть являются множеством узлов объекта. Я мог бы разбить его на части и перебрать их отдельно, но есть ли более красноречивое решение?

ответ

0

Будет ли это хорошо

protected function xml_resultHandler(event:ResultEvent):void 
{ 
    var data:ArrayCollection = xml.lastResult.response.option; 
    var valueobjects:valueObject; 

    for each (var characteristic:Object in data) 
    { 
        valueobject = new valueobject; 
        if(characteristic.option is ArrayCollection) 
         valueobject.var1 = characteristic.option[0].var1; 
        else 
         valueobject.var2 = characteristic.option.var2; 
        datamodel.addItem(valueobject); 
    } 
} 

Я использовал что-то очень похожее на это для результата обработчиков, где я не уверен, что если эти данные будут содержать 1 или несколько строк, и это, кажется, сделать трюк, кажется, что при использовании оператора точек для разбора E4X он либо вернет объект, либо arraycollection в зависимости от множественности.

+0

Да, спасибо за ваш вклад. Знание, которое я могу проверить, чтобы определить, является ли узел массивом, является критическим. – ToneLoc

Смежные вопросы