apache-flex 如何在Flex中获取XML分支的深度(级别数)

e1xvtsh3  于 2022-11-01  发布在  Apache
关注(0)|答案(2)|浏览(112)

例如,如果我有一个XML,如下所示:

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

分支国家/地区的最大深度为3。因为您可以通过最深的节点:国家(0)--〉州(1)--〉城市(2)--〉邻近地区(3)

hlswsv35

hlswsv351#

我不知道有什么内置的方法可以获得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;         
}
5kgi1eie

5kgi1eie2#

朋友们!!!我写了下一个代码使用递归算法来达到这个目标

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;             
        }

但我想知道是否有其他方法)

相关问题