解決できなかったことがあります。いくつかのレベルの階層を含む XMLList で特定のノードを検索すると、フィルターは最上位の親ノードを検索しません。
たとえば、次のようなツリーがあるとします。
<node id="a0KQ0000002PTN5MAO" parentId="">
<node id="a0KQ0000002PT8iMAG" parentId="a0KQ0000002PTN5MAO" />
</node>
そして、私がこのような研究をした場合:
var aNode = ac_hierarchy.source..node.(@id == "a0KQ0000002PTN5MAO")[0];
結果は得られません。「aNode」はnullになります:/
アイデアはありますか?
[編集] 私が理解できない何かがあります (そして、私は 2 日間探しています :/):
以下のメソッドを使用して、ac_hierarchy にノードを再帰的に追加します。
private function add_item_to_hierarchy(node:Node_vo):XML {
var firstNode:XML = ac_hierarchy.getItemAt(0) as XML;
var parentNode:XML;
if (firstNode.@[Node_vo.att_id] == node.parentId)
parentNode = firstNode;
else
parentNode = ac_hierarchy.source..node.(@[Node_vo.att_id] == node.parentId)[0];
var test:XML = ac_hierarchy.source..node.(@[Node_vo.att_id] == node.parentId)[0];
var test2:XML = ac_hierarchy.source..node.(@[Node_vo.att_id] == "a0KQ0000002PT8iMAG")[0];
newXmlNode = node.toXML();
// Add the current node to his parent node
parentNode.appendChild(newXmlNode);
}
「node.parentId」パラメーターが「a0KQ0000002PTN5MAO」メソッドに等しい「add_item_to_hierarchy」を初めて呼び出すと、ac_hierarchy は次のようになります。
<node id="a0KQ0000002PTN5MAO" parentId="" />
var test:XML が入力されます。
var test2:XML が入力されていません。
正しくappendChildです。
2 回目では、「node.parentId」パラメーターは「a0KQ0000002PT8iMAG」に等しく、ac_hierarchy は次のようになります。
<node id="a0KQ0000002PTN5MAO" parentId="">
<node id="a0KQ0000002PT8iMAG" parentId="a0KQ0000002PTN5MAO"/>
</node>
var test:XML が入力されます。
var test2:XML が入力されます。
また、appendChild も正しく動作します。
3 回目では、「node.parentId」パラメーターは再び「a0KQ0000002PT8iMAG」に等しくなり、ac_hierarchy は次のようになります。
<node id="a0KQ0000002PTN5MAO" parentId="">
<node id="a0KQ0000002PT8iMAG" parentId="a0KQ0000002PTN5MAO">
<node id="a0KQ0000002PTL9MAO"/>
</node>
</node>
var test:XML は入力されていません。
var test2:XML が入力されます。
しかし今回は、var "test" が null です (ただし、"node.parentId" の値は前のループと同じで、test2 は正しく満たされています) !!!
私はすぐに私のコンピュータを壊します:/
ご協力いただきありがとうございます。