用户ID :  密码 : 

登 录

注 册

时代财富科技公司 FortuneAge Technology Co., Ltd. 校园博客客服网站(新)

我的资料

Jorman

博客信息

积分:207
等级:3级 lv 3
日志总数:47
发表评论总数:4 (查看)
获得评论总数:29
发表留言总数:0
浏览总数:32465

最新公告

        现通缉FLASH若干,若有寻获精美FLASH网站及好玩的FLASH游戏者,请告知,重筹!


                    特此公告
                    以儆效尤

我的日历

最新评论

RE:Flv网络播放器制作全攻略——第八步
张局长也在自己网站教授技术,难得啊! RE:Flv网络播放器制作全攻略——第四步
loader.scrub._x = ns.time / p... RE:陈炯组的表演节目
后半part能带动现场气氛,后劲十足,正!!有睇头! RE:与雪佛兰一起变形未来
年会下午的视频怎么没有啊??? RE:与雪佛兰一起变形未来
极度恶劣...开一次你的博客,死一次IE...找一篇干净的...

最新留言

[全部留言] [发表留言]
http://www.fortuneage.com/ama...
这个模板总是导致我点错地方,晕!
肥仔的博客看了很有感觉.模版很有个性,内容也不错.继续努力!
偶来踩门,灌水~~~
偶来踩门,灌水~~~

RSS

首页 -> AS笔记->[转贴]XmlToObject类
[转贴]XmlToObject类

此类由petex制作,版权归原作者所有
zrong(www.zengrong.net)修改,加入识别嵌套的xml文档的功能以及支持type=”object”类型
详情见http://www.tweenpix.net/blog/index.php?2003/09/24/43-xmltoobject-as20-class

使用方法:

  1. import cn.mediasky.utils.XmlToObject;
  2. obj = new Object();
  3. obj.onMade = function() {
  4.   trace(this.main.url);
  5. }
  6. XmlToObject.loadData('test.xml', obj);

xml文件:

下载: test.xml
  1. <root>
  2.   <main type="object">
  3.     <url type="string">http://localhost/abc.php</url> 
  4.     <level type="number">3</level> 
  5.   </main>
  6.   <allowdomains type="array">'abc.net', 'abc.com', 'localhost'</allowdomains> 
  7. </root>

类文件:

  1. /*-----------------------------------------------------------------------------------*/
  2. // XmlToObject 2.0 (09.23.2003)
  3. //  (c) petepx aka Francis Bourre (peterphonix@usa.net)
  4. /*-----------------------------------------------------------------------------------*/
  5.  /*-----------------------------------------------------------------------------------*/
  6. // XmlToObject 3.0 (07.06.2006)
  7. //此类由petex制作,版权归原作者所有
  8. //zrong(www.zengrong.net)修改,加入识别嵌套的xml文档的功能以及支持type="object"类型
  9. //详情见http://www.tweenpix.net/blog/index.php?2003/09/24/43-xmltoobject-as20-class
  10. //原来的版本以及离线帮助见utils.xml.XmlToObject
  11. /*-----------------------------------------------------------------------------------*/
  12. import mx.events.EventDispatcher;
  13. /* // - Custom objects import example -
  14. import com.robertpenner.Vector; */
  15. class cn.mediasky.utils.XmlToObject {
  16.     
  17.      static var dispatchEvent:Function;
  18.      static var addEventListener:Function;
  19.      static var removeEventListener:Function;
  20.     
  21.      private static function _stripSpaces(sE:String) : String {
  22.           var sR : String = "";
  23.           for (var x = 0; x < sE.length; x++) if (sE.charCodeAt(x) <> 32) sR += sE.charAt(x);
  24.           return sR;
  25.       }
  26.     
  27.      private static function _ignoreSpaces(sE:String) : String {
  28.           var sR : String = "";
  29.           var canDel : Boolean = true;
  30.           for (var x = 0; x < sE.length; x++)  {
  31.                    if (sE.charCodeAt(x) == 34 || sE.charCodeAt(x) == 39) canDel = !canDel;
  32.                    if (sE.charCodeAt(x) != 32)  {
  33.                             sR += sE.charAt(x);
  34.                     } else {
  35.                             if (!canDel) sR += sE.charAt(x);
  36.                     }
  37.            }
  38.           return sR;
  39.       }
  40.     
  41.      private static function _explode(sE:String) : Array {
  42.           var t:Array = _ignoreSpaces(sE).split(",");
  43.           var aR:Array = new Array();
  44.           for (var y=0; y<t.length; y++) t[y].charCodeAt(0) == 34 || t[y].charCodeAt(0) == 39 ? aR.push(t[y].substr(1,t[y].length-2)) : aR.push(Number(t[y]));
  45.           return aR;
  46.       }
  47.      private static function _made(xml:Array, rO:Object) : Object{
  48.          var o:Object = new Object();
  49.          var n:Number = xml.length;
  50.         for (var x = 0; x < xml.length; x++) {
  51.                o[xml[x].nodeName] = {};
  52.                o[xml[x].nodeName]["data"] =xml[x].firstChild.nodeValue;
  53.                o[xml[x].nodeName]["varType"] = xml[x].attributes.type;
  54.                o[xml[x].nodeName]["nodeNum"] = x;    //保存当前xmlnode在父Node中的序号
  55.            }
  56.            for(var x in o) {
  57.               switch (o[x].varType) {
  58.                    case "number" :
  59.                    rO[x] = Number( _stripSpaces(o[x].data) );
  60.                    break;
  61.                    case "string" :
  62.                    rO[x] = o[x].data;
  63.                    break;
  64.                    case "array" :
  65.                    rO[x] = _explode(o[x].data);
  66.                    break;
  67.                    case "boolean" :
  68.                    _stripSpaces(o[x].data) == "true" || Number( _stripSpaces(o[x].data) ) == 1 ? rO[x] = true : rO[x] = false;
  69.                    break;
  70.                    case "object" :
  71.                    rO[x]= new Object();
  72.                    //trace('xml['+o[x].nodeNum+'].childNodes:'+xml[o[x].nodeNum].childNodes);
  73.                    rO[x] = _made(xml[o[x].nodeNum].childNodes, rO[x]);
  74.                    break;
  75.                 /* // - Custom objects deserialization example -
  76.                 case "vector" :
  77.                 var t:Array = _explode(o[x].data);
  78.                 rO[x] = new Vector(t[0], t[1]);
  79.                 break; */
  80.                 case "default" :
  81.                 // do nothing, specify something if u want ...
  82.                 break;
  83.                }
  84.                n--;
  85.           }
  86.           return rO;
  87.      }
  88.     
  89.      public static function loadData(s:String, rO:Object) {
  90.           EventDispatcher.initialize(rO);
  91.           rO.addEventListener("onMade", rO);
  92.           var myXml = new XML();
  93.           myXml.ignoreWhite = true;
  94.           myXml.onLoad = function(success) {
  95.                if (success) {
  96.                 rO = _made(myXml.firstChild.childNodes, rO);
  97.                    rO.dispatchEvent({type: "onMade", target: rO});
  98.             } 
  99.            }
  100.           myXml.load(s);
  101.       }
  102. }

网友评论

共 0 页,0 条记录  

用户名:
密码:
您的评论:



发 表 评 论