2012-01-21 14 views

Respuesta

18

que tiene que hacer esto en su lugar:

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

En el XML E4X análisis, se tienen que utilizar hasOwnProperty para comprobar si una propiedad para el atributo como fue configurado en el nodo objeto XML E4X. ¡Espero que esto ayude!

+0

Gracias, pensé que mi solución era hacky. El método hasOwnProperty hizo el truco. – Boundless

+0

¿Cómo se verifica si está vacío? – Livi17

0

Me di cuenta de esto. Para cualquier otra persona que tenga el mismo problema, parece que comprobar que la longitud del atributo es mayor que 0 funciona.

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

No sé si esto funcionará en todos los casos, pero está funcionando para mí. Si hay una mejor manera de hacerlo, publíquelo.

+0

Hey Boundless, mira mi otra respuesta. Usar hasOwnProperty es mucho más eficiente que crear una matriz de atributos y luego contar el índice de la matriz para determinar si existe. Sin embargo, si el rendimiento no es un problema, esto definitivamente también funcionará. –

+0

@JonathanDunlap Gracias, el rendimiento es un problema (pero todavía uso Flash, qué lástima). Su solución anterior con hasOwnProperty funciona muy bien, gracias. – Boundless

3

forma más fácil:

(@id in xmlIn) 

esto devolverá verdadero si existe attrtibute Identificación y falso en caso contrario.

+2

Operador 'en' cadena de necesidad, debe escribir '('@id' en xmlIn)' – marbel82

5

I encontrado 4 maneras:

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

y yo préféré primer método:

if ('@id' in xmlIn) 
{ 
    foo([email protected]); 
} 
Cuestiones relacionadas