2012-01-21 9 views

Odpowiedz

18

Trzeba to zrobić w zamian:

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

W parsowania XML E4X, trzeba użyć hasOwnProperty aby sprawdzić, czy właściwość atrybutu jak ustalono na węźle obiektu XML E4X. Mam nadzieję że to pomoże!

+0

Dziękuję, myślałem, że moje rozwiązanie było zhakowane. Metoda hasOwnProperty rozwiązała problem. – Boundless

+0

Jak sprawdzić, czy jest pusty? – Livi17

0

Wymyśliłem to. Dla każdego, kto ma ten sam problem, wydaje się, że sprawdzanie, czy długość atrybutu jest większa niż 0, działa.

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

Nie wiem, czy to zadziała we wszystkich przypadkach, ale działa dla mnie. Jeśli jest lepszy sposób, aby to zrobić, opublikuj go.

+0

Hej Bezgraniczna, zobacz moją drugą odpowiedź. Używanie hasOwnProperty jest znacznie bardziej wydajne niż tworzenie tablicy atrybutów, a następnie zliczanie indeksu tablicy w celu ustalenia, czy istnieje. Jeśli jednak wydajność nie jest problemem, to na pewno zadziała. –

+0

@ Jonathan Dunlap Dzięki, wydajność jest problemem (ale nadal używam Flasha, co za wstyd). Twoje powyższe rozwiązanie z hasOwnProperty działa świetnie, dzięki. – Boundless

3

Najłatwiej:

(@id in xmlIn) 

to zwróci true, jeśli id ​​attrtibute istnieje i false w przeciwnym wypadku.

+2

Operator 'in' potrzebuje łańcucha, musisz napisać '('@id' w xmlIn)' – marbel82

5

znalazłam na 4 sposoby:

if ('@id' in xmlIn) 
if (xmlIn.hasOwnProperty("@id")) 
if ([email protected]() > 0) 
if (xmlIn.attribute("id").length() > 0) 

i preferują pierwszą metodę:

if ('@id' in xmlIn) 
{ 
    foo([email protected]); 
} 
Powiązane problemy