加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何在Flex中循环结果对象?

发布时间:2020-12-15 01:43:53 所属栏目:百科 来源:网络整理
导读:我在手动循环通过HTTPService调用接收的xml数据时遇到问题,xml看起来像这样: DataTable Row textfoo/text /Row Row textbar/text /Row/DataTable 当webservie结果事件被触发时,我做了类似这样的事情: for(var i:int=0;ievent.result.DataTable.Row.length;
我在手动循环通过HTTPService调用接收的xml数据时遇到问题,xml看起来像这样:


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

当webservie结果事件被触发时,我做了类似这样的事情:


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个“行”节点,但似乎如果只有一个“行”节点,则event.DataTable.Row对象不是错误,代码随后中断.

循环遍历HTTPService结果对象的正确方法是什么?我需要将其转换为某种类型的XMLList集合或ArrayCollection吗?我已经尝试将resultFormat设置为“e4x”并且还没有解决问题…

谢谢

解决方法

问题出在这个声明中

event.result.DataTable.Row.length

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

event.result.DataTable.Row.length()

它令人困惑,但事实就是如此.

补充:实际上,最安全的做法是在迭代XMLLists时始终对每个循环使用a,这样你就不会犯错误,代码更少,更容易阅读:

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读