在HTTPService调用的resultHandler中,我已经为repeatCollection分配了一个重复节点。在重复节点内部是有时重复的其他节点,有时不重复。例如,此处选项节点在选项内重复。
<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错误。我如何解释这两种情况?
这是我的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 :(得分: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。