AS3.0加载XML出现“#1088 文档中根元素后面的标记格式必须正确”的解决方法

来源:互联网 发布:淘宝商品表设计 编辑:程序博客网 时间:2024/05/24 04:16

问题表现:

在加载完XML文件new XML时,出现错误“#1088 文档中根元素后面的标记格式必须正确”

 

问题分析:

XML内容为ANSI编码、XML内容没错、改为new XMLList不报错

网上有人说是System.useCodePage=true,载入的数据在XML末端有时会莫明其妙跟上一串随机乱码。

 

问题解决:

System.useCodePage=flase(默认),XML内容改为UTF-8编码

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了。

 

 

useCodePage 属性  


useCodePage:Boolean  [read-write]
 

语言版本 :  ActionScript 3.0
Player 版本 :  Flash Player 9

 

 

一个布尔值,它告诉 Flash Player 使用哪个代码页来解释外部文本文件。 当该属性设置为 false 时,Flash Player 使用 Unicode 解释外部文本文件。 (保存这些文件时,必须使用 Unicode 对其进行编码。) 当该属性设置为 true 时,Flash Player 使用运行播放器的操作系统的传统代码页来解释外部文本文件。 useCodePage 的默认值是 false。

作为外部文件加载(使用 flash.display.Loader.load()、flash.net.URLLoader、flash.net.URLStream 或 XML 类)的文本必须已使用 Unicode 编码格式保存,这样 Flash Player 才能将它识别为 Unicode。 若要使用 Unicode 对外部文件进行编码,请在支持 Unicode 的应用程序(例如,Windows 2000 上的“记事本”)中保存这些文件。

如果加载的外部文本文件不是 Unicode 编码格式,则应将 useCodePage 设置为 true。 在将加载数据的 SWF 文件的第一帧中添加以下代码,使之成为第一行代码:

System.useCodePage = true;
有了这一行代码,Flash Player 将使用运行 Flash Player 的操作系统的传统代码页来解释外部文本。 对于英文 Windows 操作系统,该代码页通常为 CP1252;对于日语操作系统,该代码页通常为 Shift-JIS。 如果将 useCodePage 设置为 true,则 Flash Player 6 及更高版本处理文本的方式与 Flash Player 5 相同。 (Flash Player 5 将所有文本都视为使用运行播放器的操作系统的传统代码页显示文本。)

如果将 useCodePage 设置为 true,应注意:在运行播放器的操作系统的传统代码页中必须包括您的外部文本文件中使用的字符,这样才能显示文本。 例如,如果您加载了一个包含中文字符的外部文本文件,则这些字符不能显示在使用 CP1252 代码页的系统上,因为该代码页不包括中文字符。

为确保所有平台上的用户都能查看您的 SWF 文件中使用的外部文本文件,应将所有外部文本文件按 Unicode 进行编码,并保留 useCodePage 的 false 设置不变。 这样,Flash Player 6 及更高版本将按 Unicode 解释文本。

原创粉丝点击