2012-02-07 12 views
0

私は入力として持つ複数のパラメータに基づいてXMLをフィルタリングしようとしています。複数のパラメータに基づいてXMLをフィルタリングする - Flex

私はそれらをフィルタリングして処理できるように、一致するレコードを持つ親ノードを特定しようとしています。

<A> 
    <B1> 
     <C1> 
      <D1>111</D1> 
      <E1>111</E1> 
      <F1> 
       <G1>111</G1> 
       <H1> 
        <I1>111</I1> 
        <J1>111</J1> 
       </H1> 
      </F1> 
     </C1> 
    </B1> 
    <B1> 
     <C1> 
      <D1>222</D1> 
      <E1>333</E1> 
      <F1> 
       <G1>222</G1> 
       <H1> 
        <I1>222</I1> 
        <J1>222</J1> 
       </H1> 
      </F1> 
     </C1> 
    </B1> 
    <B1> 
     <C1> 
      <D1>333</D1> 
      <E1>333</E1> 
      <F1> 
       <G1>333</G1> 
       <H1> 
        <I1>333</I1> 
        <J1>333</J1> 
       </H1> 
      </F1> 
     </C1> 
    </B1> 
</A> 

は私がノードD1とE1とI1のために一致させる必要があると言うことができますが、すべてのパラメータから「AND」一致がある場合、私は結果のため<B1>からノード権利を持っている必要があります。

<B1> 
    <C1> 
     <D1>222</D1> 
     <E1>333</E1> 
     <F1> 
      <G1>222</G1> 
      <H1> 
       <I1>222</I1> 
       <J1>222</J1> 
      </H1> 
     </F1> 
    </C1> 
</B1> 

私がデータを取得するには、以下の組み合わせをUSNGしようとしています:

xml..*.((hasOwnProperty("D1") && D1 == "222")&&hasOwnProperty("E1") && D1 == "333")) 

しかし、いくつかのギャップがあると思います。誰かが記入して、どこが間違っているのか、XMLをフィルタリングするためのより良いアプローチがあるのか​​教えてください。 また、filterFunction(コレクション)が助けてくれるものがありますか?

答えて

1

..演算子を使用するか、等価のdescendants()を呼び出して、階層内の場所に関係なく、条件に一致するすべてのサブノードのXMLListを取得できます。次に、xml.(criteria)を使用して、カッコ内の式にも一致するノードのみを選択します。

var result:XMLList = xml..B1.(
    (descendants ("D1") == "222") && 
    (descendants ("E1") == "333") && 
    (descendants ("I1").length() > 0) // or any other expression 
    ); 
+0

ああ、それはきれいです。 – Bob

+0

それで解決しました、ありがとうございます。 – Bob

+0

私は、クエリ部分を動的に作成して、パラメータ部分を構築するためにパラメータとキーが引き継ぐようにしています。単に表示する: 'var q1:String ="子孫(\ "E1")== \ "111 \") ";' //動的クエリービルディング。これはデモ用です。 'Alert.show(" Query >> "+ q1.toString());//出力:子孫( "E1")== "111" ' \t \t \t ' var r2:XMLList = xmlData .. *。(子孫( "E1")== "111"); //正しいanswer' 'VARのR1:XMLListです=です。xmlData .. *(q1.toString()); //奇妙な応答を与え、フィルタリングされませんanything.' **ここに欠けているものですかこれです。間違ったアプローチ** ** – Bob

関連する問題