0

我有如下所示的 XML:

<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。显然我错过了一些东西,但它是什么?

4

5 回答 5

2

尝试这个

xml..opt_out_flag

它将搜索所有出现

于 2009-07-21T10:46:45.047 回答
1

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

于 2009-07-20T19:03:30.873 回答
0

您可以使用

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

你可以省略 != undefined 部分,但为了便于阅读,我会把它留在那里。

于 2009-08-12T21:46:36.293 回答
0

你能保证它<opt_out_flag/>总是在元素的第一个子<question>元素中吗?如果是这样,类似以下的东西应该可以工作:

(免责声明:我知道这适用于属性,但我不知道它是否适用于子元素)

if( "opt_out_flag" in xml.children()[0] ) {
    doSomething();
}
于 2009-07-20T19:04:33.413 回答
0

您可以使用后代方法(沿树递归)来查找标签吗?

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

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

希望这是您正在寻找的。

于 2009-07-21T18:08:25.407 回答