0

たとえば、次のような XML があるとします。

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

分岐国の最大深さは 3 です。最も深いノードを通過できるためです: country(0) --> state(1) --> city(2) --> neigbor(3)

4

2 に答える 2

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;         
}
于 2013-01-05T08:06:09.700 に答える
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;             
        }

しかし、私は別のアプローチがあるかどうか知りたいです;)

于 2013-01-04T22:22:15.500 に答える