如何测试是否已使用AS3在XML节点中设置了属性

时间:2012-01-21 00:37:18

标签: xml actionscript-3

我正在阅读AS3中的XML文件。我需要找出节点上是否存在属性。我想做点什么:

if(xmlIn.attribute("id")){
foo(xmlIn.attribute("id"); // xmlIn is of type XML
}

然而,这不起作用。即使属性id不在节点上,上面的if语句也始终为true。

5 个答案:

答案 0 :(得分:18)

你必须这样做:

if(xmlIn.hasOwnProperty("@id")){
    foo(xmlIn.attribute("id"); // xmlIn is of type XML
}

在XML E4X解析中,您必须使用hasOwnProperty来检查是否已在E4X XML对象节点上设置属性的属性。希望这有帮助!

答案 1 :(得分:6)

我发现了4种方式:

if ('@id' in xmlIn)
if (xmlIn.hasOwnProperty("@id"))
if (xmlIn.@id.length() > 0)
if (xmlIn.attribute("id").length() > 0)

我首选方法:

if ('@id' in xmlIn) 
{
    foo(xmlIn.@id);
}

答案 2 :(得分:4)

最简单的方法:

(@id in xmlIn)

如果id属性存在,则返回true,否则返回false。

答案 3 :(得分:1)

我通常使用:

if (xmlIn.@id != undefined)

它也适用于对象属性:

if (obj.id != undefined)

答案 4 :(得分:0)

我想出来了。对于其他任何有相同问题的人来说,似乎检查属性的长度大于0是否有效。

if(xmlIn.attribute("id").length() >0){
foo(xmlIn.attribute("id"); // xmlIn is of type XML
}

我不知道这是否适用于所有情况,但它对我有用。如果有更好的方法,请发布。