2009-10-15 40 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