Question

J'ai un chargement de problème et l'accès aux données à partir d'un objet de valeur dans mon nouveau projet .. je charge un fichier xml via un service, qui contient le titre et l'emplacement des fichiers d'actifs, je dois être en mesure d'accéder à l'emplacement de un fichier actif en spécifiant le titre et retrieiving à partir d'un objet de valeur .. J'utilise le cadre Robotlegs, voici un exemple de 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>

Je puis pousser ces données dans un objet de valeur en tant que hachage Dictionnaire .. espérons-

//-----------  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;
 }

Je l'ai testé accéder à ce à partir d'un composant de vue.

// accessing from another class -----------------

var _background_image_path:String = String( filePathModel.locationHash['shell_background_image']);

il renvoie undefined .. toutes les idées?

Était-ce utile?

La solution

Vous avez oublié le @ pour l'attribut d'emplacement sur cette ligne:

var filePathVO:DataVO = new FilePathVO(file.@title.toString(),
     file.location.toString());

Le véritable problème réside sur la ligne:

var files:XMLList = xml.files.file;

Modifier à

var files:XMLList = xml.file;

La variable xml fait référence à la balise racine du fichier XML; il n'y a pas besoin d'y accéder explicitement xml.files. xml.files.file ressemble en fait pour les balises file qui sont des enfants directs des balises files qui sont des enfants directs de la balise xml-racine. Il aurait travaillé avait été quelque chose comme votre 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>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top