4

我正在尝试使用 php 动态创建 XML 文件,如下所示:

  header ("content-type: text/xml");

  // create doctype
  $dom = new DOMDocument("1.0");

  // create root element
  $root = $dom->createElement("tracklist");
  $dom->appendChild($root);
  $dom->formatOutput=true;

  // create child element
  foreach ($commonPlaylist as $value) {

     $trackArray = getTrackForID($value['ID']);

     $item = $dom->createElement("track");
     $root->appendChild($item);

     foreach ( $trackArray as $key => $value) {
      $attr = $dom->createAttribute($key);
      $item->appendChild($attr);

          $attrValue = $dom->createTextNode($value);
      $attr->appendChild($attrValue);
     }

  }

 echo $dom->saveXML();

文件的输出是正常工作的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>

但是,如果我想使用以下代码将此数据导入 as3:

var myLoader:URLLoader = new URLLoader();
myLoader.load(new URLRequest("getPlaylist.php"));
myLoader.addEventListener(Event.COMPLETE, processXML);

function processXML(e:Event):void
{
    var myXml:XML= new XML(e.target.data);
    trace(myXml);  // The variable is being traced.

}

我根本没有得到任何输出。如果我将文件作为字符串读取,我会得到整个 PHP 代码。我究竟做错了什么?

预先感谢您的任何帮助。

问候, 马特奥

4

3 回答 3

3

如果我将文件作为字符串读取,我会得到整个 PHP 代码

听起来它没有在服务器端执行。您是否将其托管在安装了 PHP 的服务器上?

于 2012-06-21T14:56:03.277 回答
2

检查变量名

  • 您正在跟踪 myXML 并且 XML 变量名称是 myXml
于 2012-06-21T14:55:55.737 回答
0

真的processXML()是触发了吗?尝试像下面的代码一样修改它,看看你是否得到“嗨!” 部分追踪。

function processXML(e:Event):void
{
    trace('Hi!');
    var myXml:XML= new XML(e.target.data);
    trace(myXML);
}

顺便说一句,使用 Flash 调试器可能比试图猜测出了什么问题更有用:) 由于 Flash Professional 附带的调试器很糟糕,我只能推荐DeMonster 调试器,它在处理 Flash 项目时为我节省了大量时间。拥有像Fiddler这样的 HTTP 流量分析工具也没有什么坏处。

于 2012-06-21T15:05:33.253 回答