XML解析类

  • <data>
  •  <item thumb="thumb/p1.jpg" img="image/p1.jpg" bigImg="big_pic/p1.jpg" />
  •  <item thumb="thumb/p2.jpg" img="image/p2.jpg" bigImg="big_pic/p2.jpg" />
  •  <item thumb="thumb/p3.jpg" img="image/p3.jpg" bigImg="big_pic/p3.jpg" />
  •  <item thumb="thumb/p4.jpg" img="image/p4.jpg" bigImg="big_pic/p4.jpg" />
  •  <item thumb="thumb/p5.jpg" img="image/p5.jpg" bigImg="big_pic/p5.jpg" />
  • </data>

以上是我们给出的XML结构,3.0中解析XML再也不像2.0那样繁琐了(不过我有和3.0一样解析的方便类)

下面是我们的XML解析类,本系列教程主要针对2.0转3.0的朋友,所以不会逐行解释

package com.net
{
 import flash.events.*;
 import flash.net.*;
 import com.event.MyEvent;//这里是我们上节自定义的事件扩展类,为什么要用到他呢。因为3.0中事件机制类与类之间不能随便传参数,跟2.0不一样了。通常解析所得的数据要传递的并不是在本类中;
 public class ReadXml extends EventDispatcher//这里为什么要继承EventDispatcher,能理解吗?不能的话往下看
 {
  public function ReadXml(serveURL:String):void
  {
   var _urlLoader=new URLLoader();
   var _urlRequest=new URLRequest(serveURL);
   _urlLoader.load(_urlRequest);
   _urlLoader.addEventListener(Event.COMPLETE,loadComplete);
  }
  private function loadComplete(evt:Event)
  {
   var xml:XML=new XML(evt.target.data);
   var myEvent:MyEvent = new MyEvent();//实例化MyEvent
   var arr:Array = new Array();//通常解析的XML数据是需要二维数组来保存的,这里XML结构比较简单
   var len:uint=xml.children().length();
   for (var i:uint = 0; i<len; i++) {
    var obj:Object = new Object();
    obj.id = i;
    obj.thumb = xml.item[i].@thumb;
    obj.img = xml.item[i].@img;
    obj.bigImg = xml.item[i].@bigImg;
    arr.push(obj);
   }
   myEvent.arr = arr;//上节的事件扩展类中的隐式设置变量方法的简用
   dispatchEvent(myEvent);//发送事件,如果需要得到myEvent.arr也就是XML解析后的数据,势必要在需要的地方侦听事件;
   evt.target.removeEventListener(Event.COMPLETE, loadComplete);
  }
 }
}

应用:以上XML解析类 如果在新建fla类应用的话。如下写:

import com.event.MyEvent;
import com.net.ReadXml;
var readXml:ReadXml = new ReadXml("data.xml");
readXml.addEventListener(MyEvent.over, Complete)//那一开始我们为什么要继承EventDispatcher能理解了吧,当我们实例化ReadXml 的时候,就可以ReadXml .addEventListener
function Complete(evt:MyEvent){
   trace(evt.arr)
   evt.target.removeEventListener(MyEvent.over, Complete);
   
}

Tags:XML  工具类  源代码  

1 Comment so far

  1. Girl on 2009-2-18 22:20:20

    Nice,期待下文


    回复该留言


Leave a reply