AS3:无法将DataEvent.data转换为XML(抛出错误,格式不正确)

时间:2009-11-20 13:29:02

标签: xml flash actionscript-3

上传文件,我希望从服务器获得XML响应。

所以,在php中,我这样做:

header("Content-type:text/xml");
echo"<whatever/>"; // any 100% valid XML

在flash中,我使用FileReference类和FileReference.upload()方法

var file:FileReference = new FileReference();
file.addEventListener(Event.SELECT, FileSelected);
file.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA, uploaded);

...

function FileSelected(e:Event)
{
    var req:URLRequest=new URLRequest(Main.baseURL+"/upload.php");
    req.method="POST";
    try{file.upload(req,"userfile")}
    catch(err:Error){Main.err("Can't upload",err,e)}
}

function uploaded(e:DataEvent)
{
    var s:String=e.data;
    trace(":"+s+":"); //output :<whatever/>: as expected
    var xml:XML=new XML(s); // fails with Error #1088: The markup in the document following the root element must be well-formed.
}

似乎DataEvent.data包含隐形垃圾,阻止它解析... 我目前的解决方案是手动切断第一个字符(0xFEFF):

function uploaded(e:DataEvent)
{
    var s:String=e.data.slice(1); // if i manually cut it off - all works
    trace(s); 
    var xml:XML=new XML(s);
}

2 个答案:

答案 0 :(得分:0)

0xFEFFzero width no-break space。尝试从php代码中删除该xml header

答案 1 :(得分:0)

UTF BOM。无论生成您尝试上传的文件是什么,都应该配置而不是来添加它。