Заполнение и доступ к данным из объекта значения
У меня возникла проблема с загрузкой и доступом к данным из объекта-значения в моем новом проекте. Я загружаю XML-файл через службу, которая содержит заголовок и расположение файлов активов, мне нужно иметь возможность доступа к расположению файла активов указав заголовок и получив его из объекта-значения. Я использую инфраструктуру Robotlegs, вот пример xml:
<?xml version="1.0" encoding="utf-8" ?>
<files id ="xmlroot">
<file title="css_shell" location = "css/shell.css" />
<file title="xml_shell" location = "xml/shell.xml" />
<file title="test" location= "test/location/test.jpg" />
<file title ="shell_background_image" location = "images/shell_images/background_image.jpg" />
</files>
Затем я помещаю эти данные в объект-значение в виде хэша словаря.
//----------- populate value objects ------------------------------------
var xml:XML = new XML(xml);
var files:XMLList = xml.files.file;
for each (var file:XML in files) {
var filePathVO:DataVO = new FilePathVO( file.@title.toString(),
file.location.toString()
);
filePathModel.locationList.push(filePathVO);
filePathModel.locationHash[filePathVO.title] = filePathVO;
}
Я проверил доступ к этому из компонента представления.
// accessing from another class -----------------
var _background_image_path:String = String( filePathModel.locationHash['shell_background_image']);
он возвращает неопределенное.. какие-либо идеи?
1 ответ
Вы забыли @
для атрибута местоположения в этой строке:
var filePathVO:DataVO = new FilePathVO(file.@title.toString(),
file.location.toString());
Настоящая проблема лежит на линии:
var files:XMLList = xml.files.file;
Измените это на
var files:XMLList = xml.file;
xml
переменная ссылается на корневой тег xml; нет необходимости явно обращаться к нему с xml.files
, xml.files.file
на самом деле ищет file
теги, которые являются прямыми детьми files
теги, которые являются прямыми потомками тега root-xml. Это сработало бы, если бы ваш xml был примерно таким:
<?xml version="1.0" encoding="utf-8" ?>
<root>
<files id ="xmlroot">
<file title="css_shell" location = "css/shell.css" />
<file title="xml_shell" location = "xml/shell.xml" />
<file title="test" location= "test/location/test.jpg" />
<file title ="shell_background_image" location = "images/shell_images/background_image.jpg" />
</files>
</root>