2009-10-15 47 views
0

如何知道XML列表是否有孩子? 我的代码如下使用硬代码,说明我想运行我的XML的孩子。 但是如果我有很多孩子,我不想写每个孩子()。动态检测XML子女

private function dataLevel():void { 
     for (var j:Number=0; j<xmlList.length(); j++) { 
      createBranch(); 

      for (var k:int = 0; k<xmlList[j].children().length(); k++) { 
       createBranch(); 
      } 

      for (var l:int = 0; l<xmlList[j].children().children().length(); l++) { 
       createBranch(); 
      } 
     } 
    } 

回答

2

createBranch做什么?这不取决于孩子的名字吗?从给定的代码,似乎你只是想要调用createBranch多少次儿童(或孙子) - 虽然我不知道什么xmlList[j].children().children().length()要回来。如果您只想获得所有子女和孙子的名单,请使用descendants()方法。

如果你想按层次顺序通过孩子,写一个递归方法。

function traverseChildren(node:XML):void 
{ 
    //calling createBranch here means one call per each xml children 
    createBranch(); 
    var list:XMLList = node.children(); 
    for each(var child:XML in list) 
    { 
    if(child.nodeKind() == "element") 
     traverseChildren(child); 
    //if you wanna call createBranch for each attribute and text node 
    //and comments and processing instructions, call it here instead 
    } 
} 
+0

那么这有助于我找出解决问题的方法。感谢名单! – Hwang 2009-10-15 08:47:28