2009-07-20 53 views
0

我有XML,看起來像這樣:如何在E4X(Flex 3,特別是)中檢測變量父項的子元素?

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

type_elt不是元素的名稱;它可能是<single>,<multiple>或其他,在運行時確定。鑑於此,如何檢測opt_out_flag元素的存在?

我嘗試這樣做(其中xmlquestion元素):

if (xml.*.opt_out_flag) { 
    do_something(); 
} 

但即使在例無opt_out_flag上述表達式返回true。顯然我錯過了一些東西,但它是什麼?

回答

1

我相信你想使用xml.*.hasOwnProperty('opt_out_flag')而不是你目前使用的。

0

你能保證<opt_out_flag/>將永遠在<question>元素的第一個孩子?如果是這樣,像下面應該工作:

(聲明:我知道這工作與屬性,但我不知道它是否會與子元素工作)

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

我不能保證,沒有。我正在處理的XML的語法沒有詳細說明,並且有點特殊,使得即使不是不可能,也很難對元素的排序或內容作出堅實的斷言。 – 2009-07-20 19:16:33

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 

可以省略!=未定義的一部分,但我會離開那裏的可讀性。

相關問題