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加载XML文件CDTATA节点内容被编码

评论(0)Web开发网
阅读(122)喜欢(0)flash/flex/fcs/AIR