E4X:Использовать строку в качестве имени атрибута в выражении?
-
03-07-2019 - |
Вопрос
У меня есть функция, которая содержит эту строку:
var returnString:String = items[0].@month;
@month - это атрибут на XML-узле следующим образом:
<xmlnode month="JAN"/>
Хорошо, но мне нужно абстрагировать имя атрибута, чтобы я мог передать строку функции и получить содержимое атрибута с именем, соответствующим переданной мной строке.Так, например, если я вызываю функцию, подобную этой function("stone"), она возвращает элементы [0].@stone.Я надеюсь, что это понятно.
Кто-нибудь знает, как сделать то, что мне нужно?
Спасибо.
Решение
Вы захотите использовать атрибут ('stone'), а не @stone, это одно и то же, @stone - это просто сокращенный способ его написания.
Другие советы
Вы можете написать это следующим образом:
var attrName:String = "month";
return items[0].@[ attrName ];
не только это, но и если вы когда-нибудь захотите присвоить значение атрибуту, используя переменную для имени атрибута, вы можете сделать это (хотя это не задокументировано) следующим образом:
public function setAttr(obj:XML, attrName:String, value:String):void{ obj.@[attrName] = value; }