AS3.0 加载XML1088问题解决

+ AS3.0 加载XML1088问题解决

as3.0读取XML时出现 TypeError: Error #1088: 文档中根元素后面的标记格式必须正确.

因为XML中的数据量很大,以为可能是输入的非法字符破坏了XML格式,检查下来发现不是这个问题.

网上搜索发现了这篇文章:as3加载非UTF-8编码的XML文件问题

http://www.51as.com/ActionScript3/as3jiazaifeiUTF-8bianmadeXMLwenjianwenti_192.html

原来是编码问题,我的XML都是用gb2312的,按照上述文章把XML改成"UTF-8”,并且把动态生成的asp用记事本另存为“utf-8”,代码中去掉” System.useCodePage=true; “,问题解决.

as3加载非UTF-8编码的XML文件问题原文:

作者:cordy发表于:2008-12-02Tag:gbk格式

  最近的一个项目,里面需要用as3载入xml,xml由PHP输出,编码为gbk.as3里用了System.useCodePage=true.

  调试时发现时不时会出现错误:TypeError: Error #1088: 文档中根元素后面的标记格式必须正确.特别是数据稍大一点的时候.

  经调试发现载入的数据在XML末端有时会莫明其妙跟上一串随机乱码.

  检查了PHP确定格式无误后,明白了这是flash as3使用了System.useCodePage=true后的BUG..

  网上解决办法是使用utf-8的格式.可是现在全站都统一为GBK了,接口又多,改起来很麻烦.

  于是结合的XML特定格式,在flash上想了个小小的办法,轻松搞定了.

  下面把我的办法共享一下吧.

private function onLoadComplete(e:Event):void { var loader:URLLoader=e.currentTarget as URLLoader; var data=loader.data; data=data.substr(0,data.lastIndexOf(“>”)+1); var xml:XML=new XML(data); ………… }

    看出来了吧,其实就是把多出的随机字符串过滤一下,因为xml必定是以'>'结尾的,将最后的'>'之后的字符都去掉就OK了.也不用全站都改代码了.需要的朋友可以参考一下吧.