0

我一直在尝试从看起来像这样的 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”变量中取出,只有空白痕迹,但没有任何成功。唯一有效的是 trace(xml.track) ,它跟踪所有跟踪对象。

我究竟做错了什么?

先感谢您,

马泰奥

4

3 回答 3

0

您可以使用 foreach 循环一个 XML 对象并将值分配给您的数组。在您的情况下,您必须调用 xml.tracklist.track[0]、xml.tracklist.track[1] 等...才能获得相应的曲目。

于 2012-06-21T16:47:08.543 回答
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
于 2012-06-21T17:09:22.233 回答
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 内容(不仅仅是文本内容)都会显示出来。

于 2012-06-21T16:56:54.187 回答