apache-flex - 如何在 Flex 中循环遍历结果对象?

标签 apache-flex actionscript-3 actionscript

我在手动循环通过 HTTPService 调用接收的 xml 数据时遇到问题,xml 看起来像这样:

<DataTable>
    <Row>
        <text>foo</text>
    </Row>
    <Row>
        <text>bar</text>
    </Row>
</DataTable>

当网络服务结果事件被触发时,我会做这样的事情:

for(var i:int=0;i&lt;event.result.DataTable.Row.length;i++)
{
    if(event.result.DataTable.Row[i].text == "foo")
        mx.controls.Alert.show('foo found!');
}

此代码有效,然后返回超过 1 个“行”节点。但是,如果只有一个“Row”节点,那么 event.DataTable.Row 对象似乎不是错误,代码随后会中断。

遍历 HTTPService 结果对象的正确方法是什么?我是否需要将其转换为某种类型的 XMLList 集合或 ArrayCollection?我已尝试将 resultFormat 设置为 e4x 并且尚未解决问题...

谢谢。

最佳答案

问题出在这条语句上

event.result.DataTable.Row.length

length 不是 XMLList 的一个属性,而是一个方法:

event.result.DataTable.Row.length()

这很令人困惑,但事实就是如此。

补充:实际上,最安全的做法是在遍历 XMLList 时始终使用 for each 循环,这样您永远不要犯错,代码更少,更易于阅读:

for each ( var node : XML in event.result.DataTable.Row )

关于apache-flex - 如何在 Flex 中循环遍历结果对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40913/

相关文章:

actionscript-3 - 为什么要调度Event.OPEN而不是IOErrorEvent.IO_ERROR?

apache-flex - Flex 防止软键盘关闭

python - 从 pyamf 中故意返回一个 FaultObject

javascript - Adobe AIR/Flex 中的嵌入式浏览器 - 缓存 javascript 和 css 文件?

actionscript-3 - AS3 在特定框架上移动物体

ios - 导出发布版本 FlashBuilder 4.7

apache-flex - 旧的 flex sdk 下载

actionscript-3 - 语法错误: expecting rightparen before colon, don't know why?

arrays - 原始声音 byteArray 到 float Array

flash - ActionScript 2 在 4 个数字之间随机