проблема с достижением атрибутов в xml для использования в объекте

#xml #actionscript-3

#xml #actionscript-3

Вопрос:

Я пытаюсь поместить каждый атрибут из моего XML-файла и сохранить каждый атрибут в объекте, но не могу их получить. Что я делаю не так? Есть 2 других класса, которые тоже загружают изображения, но не важны для моего вопроса.

XML:

 <personal>
<person id="1" name="Oprah Winfrey" image="oprah-winfrey.jpg" title="administrator"></person>
<person id="2" name="Zlatan Ibrahimovic" image="zlatan-ibrahimovic.jpg" title="technician"></person>
<person id="3" name="Barack Obama" image="barack-obama.jpg" title="CEO"></person>
</personal>
  

AS3:

 private var _items:Array = new Array();
private var _xmlLoader:URLLoader = new URLLoader();
private var _Loader:Loader;
private var _urlRequest:URLRequest;
private var _xml:XML;

public function Main(){
    _xmlLoader.load(new URLRequest("personal.xml"));
    _xmlLoader.addEventListener(Event.COMPLETE, onXmlLoadComplete);
}

private function onXmlLoadComplete(e:Event):void{
    
    _xml = new XML(e.target.data);
    var _xmlList:XMLList = _xml.person;
        for each(var node in _xmlList){
            for each(var attribute in node.attributes())
            //trace(attribute.name() "::" attribute) //will output each attribute
            //trace("********Node End*********")
            var obj:Object = attribute;
            trace("obj " obj.('image')); //outputs "title" node from xml file
            var item:ImageItem = new ImageItem(obj.image, 
                                            obj.name, 
                                            obj.title);
        addChild(item);

        _items.push(item);  
        }
        
    trace("items " _items.length);
}
  

Ответ №1:

вы очень близки! Вот обновленная версия вашего кода цикла:

 xml = new XML(e.target.data);

for each (var node:XML in xml.person) {
    var obj:Object = {};
    obj.name = node.@name;
    obj.image = node.@image;
    obj.title = node.@title;

    var item:ImageItem = new ImageItem(obj.image, obj.name, obj.title);

    ...
}
  

Я надеюсь, что это поможет!