=波波日志 > flash/flex/fcs/AIR > Flash加载XML文件CDTATA节点内容被编码=

Flash加载XML文件CDTATA节点内容被编码

  今天在做一个flash动画的时候,动态加载xml文件,但是碰到了CDATA节点存在XML保留字,被flash解释器自动编码为对应实体,⊙﹏⊙b汗。

  XML关键字为,< > " ' & 这个5个,如果不使用CDATA节点,这些字符必须使用对应的实体 &lt; &gt; &quot; &apos; &amp;代替,要不XML文件会出错,但是flash自动把CDATA节点的内容中的XML关键字给编码了,自能手动替换回来,代码如下。

  由于as没有内置的replace函数,自能自己编写函数来实现replace功能,更多as字符串处理函数参考:【actionscript】字符串处理函数

+展开
-ActionScript
function replace (str:String, replace:String, replaceWith:String):String{
 var sb:String = new String(), found:Boolean = false;
 for (var i = 0; i < str.length; i++){
     if(str.charAt(i) == replace.charAt(0)){
         found = true;
         for(var j = 0; j < replace.length; j++){
             if(!(str.charAt(i + j) == replace.charAt(j))){
                 found = false;break;
             }
         }
         if(found){
             sb += replaceWith;
             i = i + (replace.length - 1);
             continue;
         }
      }
      sb += str.charAt(i);
  }//end for
  return sb;
}
var ens=[{s:'&',t:'&'},{s:'<',t:'<'},{s:'>',t:'>'}],l=ens.length,i;//定义要处理的XML实体
function T(v){//Flash会把CDATA节点中的XML关键字符编码,只能替换过一道了。
v=v.toString();
for(i=0;i<l;i++)v=replace(v,ens[i].s,ens[i].t);
return v;
}
类别:flash/flex/fcs/AIR 作者:波波 日期:2010-06-23 【评论:0】 
 
暂时没有评论!
发表留言
  • *昵称:
  • 头像:
  • 电子邮件: [留下您的邮件,方便管理员回复您。]
  • 个人网站: *验证码:
声明:本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载或引用的作品侵犯了您的权利,请通知我们,我们会及时删除!
Powered by showbo,©2012WEB编程网桂ICP备05005887号 京公网安备1101055090