作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在手动循环通过 HTTPService 调用接收的 xml 数据时遇到问题,xml 看起来像这样:
<DataTable>
<Row>
<text>foo</text>
</Row>
<Row>
<text>bar</text>
</Row>
</DataTable>
当网络服务结果事件被触发时,我会做这样的事情:
for(var i:int=0;i<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/
我是一名优秀的程序员,十分优秀!