2011-06-22 5 views
0

解決できないことがあります。階層の階層を含むXMLList内の特定のノードを検索すると、フィルタがトップの親ノードで検索されません。例えば".."表記を使用したXMLListのフィルタリング

、私はこのような木がある場合:

<node id="a0KQ0000002PTN5MAO" parentId=""> 
    <node id="a0KQ0000002PT8iMAG" parentId="a0KQ0000002PTN5MAO" /> 
</node> 

をし、私はこのような研究内容を作った場合:私は結果を得るません

var aNode = ac_hierarchy.source..node.(@id == "a0KQ0000002PTN5MAO")[0]; 

、「アノード」は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 ([email protected][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" パラメータと "add_item_to_hierarchyは" "a0KQ0000002PTN5MAO" 法に等しい呼び出す最初の時間は、ac_hierarchyは次のようになります。

<node id="a0KQ0000002PTN5MAO" parentId="" /> 

var test:XMLが入力されました。

var test2:XMLが入力されていません。

正しく子供を追加します。

<node id="a0KQ0000002PTN5MAO" parentId=""> 
    <node id="a0KQ0000002PT8iMAG" parentId="a0KQ0000002PTN5MAO"/> 
</node> 

VARテスト:XMLが満たされている

二回目は、 "node.parentId" パラメータが "a0KQ0000002PT8iMAG" とac_hierarchyは次のようになりますし等しいです。

var test2:XMLが入力されています。

また、正しく追加されます。

3回目、 "node.parentId" パラメータは再び "a0KQ0000002PT8iMAG" に等しいと同じようac_hierarchyはなります

<node id="a0KQ0000002PTN5MAO" parentId=""> 
    <node id="a0KQ0000002PT8iMAG" parentId="a0KQ0000002PTN5MAO"> 
     <node id="a0KQ0000002PTL9MAO"/> 
    </node> 
</node> 

VAR試験:XMLが満たされていません。

var test2:XMLが入力されています。

今回は、var "test"はnullです(ただし、 "node.parentId"の値は以前のループと同じですが、test2が正しく入力されています)。あなたの助けのために/

ありがとう:

私はすぐに自分のコンピュータを中断します。

+0

「ac_hierarchy」変数に代入してXML全体を提供してください。今のところ、 'var aNode:XMLList = ac_hierarchy..node。(@ id ==" a0KQ0000002PTN5MAO ")[0];'を使うことをお勧めします。 – Constantiner

+0

@ Constantiner:私の 'ac_hierarchy'変数の宣言は次のとおりです:' [Bindable] public var ac_hierarchy:XMLListCollection = new XMLListCollection(); '残念ながら、サンプルを使用すると私にエラーが表示されます: ' 1119:プロパティノードを静的型mx.collections:XMLListCollection.with – pierrefevrier

答えて

0

はい、XMLセレクタは、ルートノードをチェックしませんが、回避策があります。

  • は、プロキシのXMLListにあなたの親ノードを取得し、それを検索:

    VARリスト:XMLListオブジェクト=新しいXMLListです( );
    list [0] = < node id = "1"/>;
    var results:XMLList = list。(@ id == "1");

  • または親ノードを別途確認して検索結果に追加するだけです。

+0

で参照してください。これはおそらく動作しますが、目的は1つの操作で階層全体を検索することでした。それは方法がないようです:/ – pierrefevrier

関連する問題