我正在讀取AS3中的XML文件。我需要找出節點上是否存在屬性。我想做類似的事情:如何測試是否使用AS3在XML節點中設置了屬性
if(xmlIn.attribute("id")){
foo(xmlIn.attribute("id"); // xmlIn is of type XML
}
但是這並不奏效。上面的if語句總是如此,即使屬性ID不在節點上。
我正在讀取AS3中的XML文件。我需要找出節點上是否存在屬性。我想做類似的事情:如何測試是否使用AS3在XML節點中設置了屬性
if(xmlIn.attribute("id")){
foo(xmlIn.attribute("id"); // xmlIn is of type XML
}
但是這並不奏效。上面的if語句總是如此,即使屬性ID不在節點上。
你必須這樣做,而不是:
if(xmlIn.hasOwnProperty("@id")){
foo(xmlIn.attribute("id"); // xmlIn is of type XML
}
在XML E4X解析,你必須使用hasOwnProperty檢查,如果該屬性爲設定的E4X XML對象節點上的屬性。希望這可以幫助!
我想通了。對於具有相同問題的其他人來說,它似乎檢查該屬性的長度是否大於0。
if(xmlIn.attribute("id").length() >0){
foo(xmlIn.attribute("id"); // xmlIn is of type XML
}
我不知道這是否適用於所有情況,但它對我有用。如果有更好的方法來做到這一點,請發佈它。
嘿無邊,看到我的其他答案。使用hasOwnProperty比創建屬性數組更有效,然後對數組索引進行計數,以確定它是否存在。但是,如果性能不是問題,這肯定會起作用。 –
@JonathanDunlap謝謝,表現是一個問題(但我仍然使用Flash,真是太遺憾了)。您的上述解決方案hasOwnProperty效果很好,謝謝。 – Boundless
最簡單的方法:
(@id in xmlIn)
如果ID attrtibute存在,否則爲false,這將返回true。
運算符'in'需要字符串,你必須寫'('@id'in xmlIn)' – marbel82
我發現了4種方式:
if ('@id' in xmlIn)
if (xmlIn.hasOwnProperty("@id"))
if ([email protected]() > 0)
if (xmlIn.attribute("id").length() > 0)
,我prefere第一種方法:
if ('@id' in xmlIn)
{
foo([email protected]);
}
謝謝你,我認爲我的解決方案很爛。 hasOwnProperty方法取得了訣竅。 – Boundless
你如何檢查它是否爲空? – Livi17