XML对象如何循环提取里面的数据,给个例子
我现在有个XML对象格式如下:
<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>
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 换一下,就可以了
function walkNodes(data:Array):void { for each (var child:Object in data) { if(child.children != null) { // 如果还有孩子,递归调用遍历孩子的所有节点 walkNodes(child.children); } else { // 当前层的叶子节点 trace(child); } } }