E4X: ¿Usar cadena como nombre de atributo en la expresión?
-
03-07-2019 - |
Pregunta
Tengo una función que tiene esta línea:
var returnString:String = items[0].@month;
@month es un atributo en un nodo XML así:
<xmlnode month="JAN"/>
Está bien, pero debo abstraer el nombre del atributo para poder pasar una cadena a la función y obtener el contenido del atributo con el nombre que coincida con la cadena que pasé. Así, por ejemplo, si llamo a la función como esta función (" piedra "), devuelve los elementos [0]. @ Piedra. Espero que esto quede claro.
¿Alguien sabe cómo hacer lo que busco?
Gracias.
Solución
Querrás usar el atributo ('piedra') en lugar de @stone, es lo mismo, @stone es solo una forma abreviada de escribirlo.
Otros consejos
Puedes escribir esto como:
var attrName:String = "month";
return items[0].@[ attrName ];
no solo eso, sino que si alguna vez desea asignar un valor a un atributo utilizando una variable para el nombre del atributo, puede hacerlo (aunque no está documentado) así:
public function setAttr(obj:XML, attrName:String, value:String):void{ obj.@[attrName] = value; }