首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 媒体动画 > flex >

XML对象怎么循环提取里面的数据,给个例子

2012-02-14 
XML对象如何循环提取里面的数据,给个例子我现在有个XML对象格式如下:XML codexmlnode id0 name根

XML对象如何循环提取里面的数据,给个例子
我现在有个XML对象格式如下:
 

XML code
  <xml>    <node id='0' name='根节点'>       <node id='0001' parentNode='0' name='节点一'>         <node id='0001001' parentNode='0001' name='节点一(1)' />       </node>       <node id='0002' parentNode='0' name='节点二' />    </node>  </xml>


1.我想将上面的xml数据通过循环一条一条将数据读出,如何写谢谢。。
2.如果我只知道id='0001'如何通过这个得到这个节点的子节点。非常感谢。。

补充一点,,ID代码是唯一的

[解决办法]
1、你的循环读出是什么意思?我看你XML里面有parentNode,我以前也做过,用的是xslt转的,将一个树形的XML转成平级的XML,用普通的递归循环也能打成平级;
2、xml..node.(@id == '0001')[0]不就是id为0001的结点吗?然后取children不就是子节点吗?
[解决办法]
XML code
private function findChecked(xmllist:XMLList):void{    for(var i:int=0;i<xmllist.length();i++)    {        if(xmllist[i].@id=="0001")       {        Alert.show(xmllist[i].@id);       }      if(xmllist[i].hasComplexContent()){        findChecked(xmllist[i].children());      }    }}
[解决办法]
你的数据结构是树型嘛。
如果层数固定,又不是很多,可以写死几次循环。
但个人不推荐这么做,毕竟写个递归又不难,这样很灵活,以后层数变得话,对这个方法没影响。

递归的大概思路是这样:
你现在不同的只是形参的类型换一下,里面的child.children 换一下,就可以了
JScript code
function walkNodes(data:Array):void            {                for each (var child:Object in data)                {                    if(child.children != null) {                        // 如果还有孩子,递归调用遍历孩子的所有节点                        walkNodes(child.children);                    } else {                        // 当前层的叶子节点                        trace(child);                    }                }            } 

热点排行