たとえば、次のような 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)
たとえば、次のような 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)
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;
}
友達!!!この目標を達成するために、再帰的アルゴリズムを使用して次のコードを作成しました
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;
}
しかし、私は別のアプローチがあるかどうか知りたいです;)