2013-01-04 46 views
0

舉例來說,如果我有一個像XML:如何獲得一個XML分公司的深度(層數)Flex中

<country> 
    <state name="a"> 
    <city> 
     <neigbor name="n" /> 
    </city> 
    </state> 
    <state name="b"> 
    </state> 
</country> 

分支全國擁有最高深3.因爲你可以去通過最深的節點: country(0) - > state(1) - > city(2) - > neigbor(3)

回答

0

朋友們!我寫了使用遞歸算法來實現這一目標

 public function getMaxDeep() : int { 
      var deep : int = getMaxDeepRecursive(dataProvider,0); 
      return deep; 
     } 

     public function getMaxDeepRecursive(element:XML, deep : int) : int { 
      if(element.children().length()==0) return deep; 
      var maxDeep : int = 0; 
      for each(var item : XML in element.children()) { 
       var element : XML = item; 
       var otherDeep : int = getMaxDeepRecursive(element,deep+1); 
       if(otherDeep>maxDeep) maxDeep = otherDeep; 
      } 
      if(deep>maxDeep) maxDeep = deep; 
      return maxDeep;    
     } 

下一個代碼,但我想知道是否有另一種方法;)

1

我不知道任何內置的方式來獲得XML的最大深度,但你的算法可以精煉:

public function getXmlDepth(x:XML):int{ 
    var res:int = 0;     
    for each(var node:XML in x.children()){ 
     res=Math.max(res,getXmlDepth(node)+1); 
    } 
    return res;   
} 
+0

我覺得差不多,非常感謝... –