2011-01-27 46 views
0

在HTTPService調用的resultHandler中,我已將一個重複節點分配給一個arrayCollection。在該重複節點內部的其他節點有時重複,有時不重複。例如,這裏的選項節點重複選項具有重複節點的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循環中的actionscript錯誤。我如何解釋這兩種情況?

這裏是我的循環分配對象值對象:

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解析時,它會根據多重性返回一個對象或一個數組集合。

+0

是的,謝謝你的輸入。我可以測試以查看節點是否爲數組集合的知識至關重要。 – ToneLoc 2011-01-27 23:33:51