2012-02-07 3 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

쿼리 파트를 동적으로 만들려고하므로 params와 키가 조건 파트를 만들기 위해 대신 사용됩니다. 그냥 보여 : 'var q1 : String = "자손 (\"E1 ") == \"111 \ ")";'// 동적 질의 건물, 이것은 단지 데모 용입니다. 'Alert.show ("Query >>"+ q1.toString()); // 출력 : 자손 ("E1") == "111"' \t \t \t var r2 : XMLList = xmlData .. *. (자손 ("E1") == "111"); // 올바른 결과를 제공합니다. 대답 ' 'var r1 : XMLList = xmlData .. *. (q1.toString()); // 이상한 응답을 보내고 아무것도 필터링하지 않습니다. " ** 여기에 누락되었거나 ** – Bob

관련 문제