Bestücken und Daten von einem Wertobjekt zugreift
-
01-10-2019 - |
Frage
Ich habe ein Problem Laden und den Zugriff auf Daten von einem Wertobjekt in meinem neuen Projekt .. ich über einen Dienst eine XML-Datei laden, die Titel und die Standorte der Asset-Dateien enthält, muss ich der Lage sein, den Standort für den Zugriff von eine Asset-Datei durch den Titel Angabe und es von einem Wert Objekt retrieiving .. ich bin das Robotlegs Framework, hier ist ein Beispiel für die 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>
ich dann drücken Sie diese Daten in ein Wertobjekt als Wörterbuch Hash .. hoffentlich
//----------- 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;
}
Ich habe das aus einer Sicht Getestete Komponente zugreifen.
// accessing from another class -----------------
var _background_image_path:String = String( filePathModel.locationHash['shell_background_image']);
Es gibt undefined zurück .. irgendwelche Ideen?
Lösung
Sie haben vergessen, die @
für Standortattribut auf dieser Linie:
var filePathVO:DataVO = new FilePathVO(file.@title.toString(),
file.location.toString());
Das eigentliche Problem liegt auf der Linie:
var files:XMLList = xml.files.file;
Ändern es zu
var files:XMLList = xml.file;
Die xml
Variable bezieht sich auf den Stamm-Tag des XML; es gibt keine Notwendigkeit, sie mit xml.files
explizit zuzugreifen. xml.files.file
sieht tatsächlich für file
Tags, die direkten Kinder von files
Tags sind, die direkten Kinder der Root-xml-Tags. Es wäre schon Ihre xml gewesen so etwas wie gearbeitet hat:
<?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>