XML в Actionscript 3?

Я пытался извлечь треки из моего XML-файла, который выглядит следующим образом

<?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", оставив только пустые следы и безуспешно. Единственное, что работает, - это трассировка (xml.track), которая отслеживает все объекты трека.

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

Заранее спасибо,

Matteo

3 ответа

Чтобы получить один контент, попробуйте это как..

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

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

Я думаю, что вы делаете правильные вещи. Просто помните, что у вас есть пустые узлы 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-содержимое узла (не только текстовое содержимое).

Другие вопросы по тегам