2009-07-20 2 views
0

다음과 같은 XML이 있습니다.E4X (Flex 3, 구체적으로)에서 변수 부모의 하위 요소를 어떻게 찾을 수 있습니까?

<question> 
    <type_elt> 
     <opt_out_flag /> 
    </type_elt> 
</question> 

type_elt는 요소 이름이 아닙니다. 런타임시 결정되는 <single>, <multiple> 또는 다른 것일 수 있습니다. 어떻게하면, opt_out_flag 요소의 존재를 감지 할 수 있습니까?

question

question이없는 경우에도 위의 표현식은 true를 반환합니다. 분명히 나는 ​​무엇인가 놓치고있다. 그러나 그것은 무엇 이냐?

답변

1

나는 현재 사용하고있는 것보다 xml.*.hasOwnProperty('opt_out_flag')을 사용하려고합니다.

0

<opt_out_flag/>은 항상 <question> 요소의 첫 번째 하위 항목에 포함될 수 있습니까? 이 경우, 다음과 같이 작동합니다 :

(면책 조항 :이 속성이 작동 알고 있지만,이 자식 요소로 작동하는지 모르겠어요)

if("opt_out_flag" in xml.children()[0]) { 
    doSomething(); 
} 
+0

나는 그것을 보장 할 수 없습니다. 내가 처리하고있는 XML 문법은 덜 구체적이고 일종의 임시 방편으로, 요소의 순서 나 내용에 대해 확실한 주장을하는 것은 불가능하지는 않더라도 어렵지 않습니다. –

+0

아 좋아. 그렇다면 나는 quoo의 해결책이 당신이 그때 가야하는 방법이라고 생각할 것입니다. 그 해결책이 작동하지 않는다면, 당신은 모든 자식 요소를 반복하여, opt-out 플래그의 존재를 테스트해야합니다. – Dan

2

시도
xml..opt_out_flag 

그것은 모든 발생

0

당신이 (트리를 재귀) 자손 방법 태그를 찾을 수를 사용하여 검색합니다?

var optOutNodes:XMLList = xml.descendants("opt_out_flag"); 

if(optOutNodes.length()) 
{ 
    //do code here 
} 

희망하시는 바입니다.

0

당신은

var optOut:Boolean = xml..opt_out_flag != undefined 

당신이! = 정의되지 않은 부분을 생략 할 수 있습니다 사용할 수 있습니다,하지만 난 가독성을 위해 거기를 떠날 것이다.