заполнение и доступ к данным из объекта значений
-
01-10-2019 - |
Вопрос
У меня есть проблемы с загрузкой и доступом к данным из объекта стоимости в моем новом проекте. Я загружаю файл XML через сервис, который содержит заголовок и местоположение файлов активов, мне нужно иметь возможность получить доступ к расположению файла активов Указав название и охватывающую его из ценного объекта .. Я использую Framework 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']);
Это возвращает неопределенные .. Любые идеи?
Решение
Вы забыли @
Для атрибута местоположения на этой строке:
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>