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

Flex XML 的遍历

发布时间:2020-12-15 01:14:48 所属栏目:百科 来源:网络整理
导读:?????? 使用Flex的朋友都知道,Flex使用XML做为Flex 的数据源,那是家常便饭的事情,因此不可避免地要碰到XML遍历的问题,对于新手来说,这个问题,还真是需要解决的问题。下面我们来讨论一下这个问题。 ????? 一、XML的格式。我们这里讨论的XML数据,包括两
?????? 使用Flex的朋友都知道,Flex使用XML做为Flex 的数据源,那是家常便饭的事情,因此不可避免地要碰到XML遍历的问题,对于新手来说,这个问题,还真是需要解决的问题。下面我们来讨论一下这个问题。

????? 一、XML的格式。我们这里讨论的XML数据,包括两种格式。

?????? 格式一: 树型结构XML数据:

?

<root  label="系统功能区"> 
      <child1  label="设备管理" > 
                <child2 label="单点操作"/> 
                <child2 label="自定义分组"/> 
                <child2 label="设备维护"/> 
                <child2 label="节点配置"/> 
                <child2 label="通讯号码"/> 
                <child2 label="自定义字段"/>   
       </child1> 
       <child1  label="警报处理" > 
                <child2 label="报警参数"/> 
                <child2 label="报警维护"/>  
</child1>

??????? 格式二:记录型XML数据:

<alerts> 
      <alert> 
        <ID>213001</ID> 
        <name></name> 
        <kind></kind> 
        <desc></desc> 
        <addr></addr> 
        <tel>020-63263365</tel> 
    </alert> 
    <alert> 
        <ID>213001</ID> 
        <name></name> 
        <kind></kind> 
        <desc></desc> 
        <jb>5</jb> 
        <addr></addr> 
        <tel>020-63263365</tel> 
    </alert> 
</alerts>

?

??? 朋友们,有没有看出这两种数据的格式有个么不同,对了,一种的树型结构的,适合于给Tree控件提供数据源,一个是记录型的,适合于给 dataGrid List等控件提供数据源。

??? 二、两种不同数据源的遍历方法不同。因为结构不一样,所以遍历起来的方法也不一样。

????????? 对于数型结构,要遍历的话,需要递归,遍历每一个叶子结点。

private function Trav_AddDg(xml:XMLList,):void 
{ 
    for each (var xmlChildren:XML in xml) 
    { 
        if (xmlChildren.@flag == "") 
        { 
            //做事情 
        } 
        //有子结点,递归 
        if (xmlChildren.hasComplexContent()) 
        { 
            var list:XMLList=xmlChildren.children(); 
            Trav_AddDg(list,desc); //递归调用   
        } 
    } 
}


???? 注意递归的条件,防止无穷递归。

???? 对于记录型结构我们采用循环的方式就可以遍历:

var i:int; 
for(i=0;i<flexXML.child("alert").length();i++) 

{                                          

trace(flexXML.child("alert").[i].Name+":"+flexXML.child("alert").[i].Version);  
} 

? OK,好了。

(编辑:李大同)

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

    推荐文章
      热点阅读