2014-09-25 48 views
0

我的XML是,如何在as3中获得最深的XML节点?

<books> 
    <book> 
    <chapter number="1"> 
     <chapter number="2"> 
      <chapter number="3"> 
      </chapter> 
     </chapter> 
    </chapter> 
    </book> 
</books> 

我想得到这样的使用环路的XML最深的节点。我试过类似

private function getDeepNode(node:XML):XML 
    { 
     var nextLevelNode:XML = XML(node.chapter[0]); 
     if (nextLevelNode.children().length() > 0) 
     { 
      return getDeepNode(nextLevelNode); 
     } 
     else 
     { 
      return nextLevelNode; 
     } 
    } 

但我无法得到它。我不知道我的错误是什么。任何人都可以帮助我?

回答

0

这取决于你有“最深”的定义。如果你只是想获得参考的最后一个节点,你可以使用XML ..操作:

 var xml:XML = <books> 
      <book> 
       <chapter number="1"> 
        <chapter number="2"> 
         <chapter number="3"> 
         </chapter> 
        </chapter> 
       </chapter> 
      </book> 
     </books> 

     var lastNode:XML = res[res.length()-1]; 

     trace("last", [email protected][0]); 

输出:

 [trace] last 3 
+0

如此之好。如果我想获得关于该节点的其他信息,我没有机会得到它。所以我想用递归循环来做这个。 – user 2014-09-25 14:13:06

+0

对节点的引用是_res [res.length() - 1] _,我更新了答案 – fsbmain 2014-09-25 14:55:16