2012-06-21 3 views
0

Я пытался получить треки из моего файла XML, который выглядит, как этотXML в ActionScript 3?

<?xml version="1.0"?> 
<tracklist> 
    <track ID="4" title="Track01" artist="Artist01" url="" length="" coverURL=""/> 
    <track ID="1" title="Track02" artist="Artist02" url="" length="" coverURL=""/> 
    <track ID="8" title="Track03" artist="Artist03" url="" length="" coverURL=""/> 
</tracklist> 

в массив в ActionScript 3.

я не мог понять.

Я пробовал так:

var myLoader:URLLoader = new URLLoader(); 
myLoader.load(new URLRequest("http://localhost:8888/Fabse/src/getCommonPlaylist.php")); 
myLoader.addEventListener(Event.COMPLETE, processXML); 

    function processXML(e:Event):void 
    { 
    var xml:XML= new XML(e.target.data); 
    xml.ignoreWhitespace=true; 

    var list:XMLList = XMLList(xml.track); 


    } 

Затем я попытался миллионы способов, чтобы получить данные из списка или «XML» переменной только с пустыми следами и без успеха вообще. Единственное, что работает, это trace (xml.track), который отслеживает все объекты трека.

Что я делаю неправильно?

Спасибо заранее,

Маттео

+0

Я в основном нужен массив, как это треки [0-2] – matteok

ответ

0

Вы можете использовать Еогеасп в цикле по объекту XML и присвоить значение в массив. В вашем случае вам нужно вызвать xml.tracklist.track [0], xml.tracklist.track [1] и т. Д., Чтобы получить соответствующий трек.

0

Я думаю, что вы поступаете правильно. Просто помните, что у вас есть пустые узлы XML, и вы используете атрибуты.

По умолчанию я думаю, что toString() использует значение текстового узла, поэтому при отладке вы можете использовать toXMLString().

попробовать что-то вроде этого:

var myLoader:URLLoader = new URLLoader(); 
myLoader.load(new URLRequest("http://localhost:8888/Fabse/src/getCommonPlaylist.php")); 
myLoader.addEventListener(Event.COMPLETE, processXML); 



    function processXML(e:Event):void 
     { 
     var xml:XML= new XML(e.target.data); 
     xml.ignoreWhitespace=true; 

     var tracks:XMLList = xml.track; 
     trace("tracks\n",tracks); 
     for each(var track:XML in tracks) trace('track',track,'track.toXMLString()',track.toXMLString()); 


     } 

Обратите внимание на след для каждого трека, если я просто track, не получает отображается ничего, хотя узел есть, но при использовании track.toXMString() все XML отображается содержимое узла (а не только текстовое содержимое).

0

Чтобы получить единое содержание попробовать как ..

trace(xml.elements("track").length()); // 3 
trace(xml.elements("track")[0].toXMLString()); // <track ID="4" title="Track01" artist="Artist01" url="" length="" coverURL=""/> 
trace(xml.name().localName); // tracklist 
trace(xml.attributes()[0]); // 4 
trace(xml.attributes()[0].name()); // ID