XML对象怎么循环提取里面的数据,给个例子
XML对象如何循环提取里面的数据,给个例子
我现在有个XML对象格式如下:
1.我想将上面的xml数据通过循环一条一条将数据读出,如何写谢谢。。
2.如果我只知道id='0001'如何通过这个得到这个节点的子节点。非常感谢。。
补充一点,,ID代码是唯一的
------解决方案--------------------
1、你的循环读出是什么意思?我看你XML里面有parentNode,我以前也做过,用的是xslt转的,将一个树形的XML转成平级的XML,用普通的递归循环也能打成平级;
2、xml..node.(@id == '0001')[0]不就是id为0001的结点吗?然后取children不就是子节点吗?
------解决方案--------------------
我现在有个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); } } }