我正在阅读AS3中的XML文件。我需要找出节点上是否存在属性。我想做点什么:
if(xmlIn.attribute("id")){
foo(xmlIn.attribute("id"); // xmlIn is of type XML
}
然而,这不起作用。即使属性id不在节点上,上面的if语句也始终为true。
答案 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
}
我不知道这是否适用于所有情况,但它对我有用。如果有更好的方法,请发布。