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?

War es hilfreich?

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>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top