Flex 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,好了。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值