popolamento e l'accesso ai dati da un oggetto valore
-
01-10-2019 - |
Domanda
ho un problema di carico e l'accesso ai dati da un oggetto valore nel mio nuovo progetto .. Ho caricare un file XML tramite un servizio, che contiene il titolo e posizioni dei file di risorse, ho bisogno di essere in grado di accedere al percorso di un file risorsa specificando il titolo e retrieiving da un oggetto di valore .. sto utilizzando il framework Robotlegs, ecco un esempio di 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>
Ho poi spingere questi dati in un oggetto valore hash dizionario .. speriamo
//----------- 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;
}
Ho testato l'accesso a questo da un componente di visualizzazione.
// accessing from another class -----------------
var _background_image_path:String = String( filePathModel.locationHash['shell_background_image']);
restituisce il valore undefined .. tutte le idee?
Soluzione
È dimenticato il @
per l'attributo posizione su questa linea:
var filePathVO:DataVO = new FilePathVO(file.@title.toString(),
file.location.toString());
Le bugie vero problema sulla linea:
var files:XMLList = xml.files.file;
Cambia a
var files:XMLList = xml.file;
La variabile xml
riferisce al tag radice del XML; non c'è bisogno di accedervi in ??modo esplicito con xml.files
. xml.files.file
oggi si presenta per i tag file
che sono figli diretti di tag files
che sono figli diretti del tag root-xml. Sarebbe già lavorato era il tuo xml stato qualcosa di simile:
<?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>