一聚教程网:一个值得你收藏的教程网站

热门教程

flash AS3实现远程服务器xml数据读取解析

时间:2022-06-28 22:12:45 编辑:袖梨 来源:一聚教程网

周日CG接到一位网路上的朋友的问题,要求用flash ActionScript实现从服务端读取动态生成的数据并且进行解析,输入到用户界面的小程序今天代码放上来与大家分享,实现过程很简单,供初学者学习,也希望老鸟指正。

要求:BS结构下,客户端使用flash从服务端读取动态生成的XML格式数据,并将获取的数据进行解析和发送到界面显示。


XML格式:

 代码如下 复制代码


 
 sdfsdf
 2009-10-10
 2009-10-01
 56456
 良好
 否 www.111com.net
 

 
 dfgdfgdfg
 2009-10-10
 2009-10-01
 23
 良好
 
 

要求解析成单个user对象并使用Array保存,其中user对象包含XML中的数据
的属性

主要代码:

 

 代码如下 复制代码
 package {
  import flash.display.Sprite;
  import flash.events.*;
  import flash.net.URLLoader;
  import flash.net.URLRequest;
  import flash.xml.*;
 
  public class FlashXml extends Sprite
  {
    //UserInfo业务对象实例
    private var bui:BUserInfo = new BUserInfo() ;
    //XML缓存
    private var XmlData:XML;
    //用户列表
    private var userList:Array;
 
    //constructor
    public function FlashXml() {
      //加载XML
      loadXml();
    }
    /**
    *方法名:loadXml
    *功能:加载外部XML数据
    */
    private function loadXml():void{
      var loader:URLLoader = new URLLoader();
      //设置Loader的事件监听
      configureListeners(loader);
      //URL请求对象,从配置类中获取URL
      var request:URLRequest = new URLRequest(ApplicationConfig.RequestURL);
      try {
        loader.load(request);
      } catch (error:Error) {
        trace("加载XML错误.");
      }
    }
 
    /**
    *方法名:configureListeners
    *功能:设置对象的事件监听
    */
    private function configureListeners(dispatcher:IEventDispatcher):void {
      //加载完成
      dispatcher.addEventListener(Event.COMPLETE, completeHandler);
      //设置读取完成事件绑定
      dispatcher.addEventListener(Event.COMPLETE, completeHandler);
      //捕获安全错误和IO错误
      dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
    }
 
    /**
    *方法名:completeHandler
    *功能:XML数据加载完毕之后操作
    */
    private function completeHandler(event:Event):void {
      var loader:URLLoader = URLLoader(event.target);
      this.XmlData = new XML(loader.data);
      userList = bui.GetUserInfoList(XmlData);
      this.XmlParse()
    }
 
    /**
    *方法名:securityErrorHandler
    *功能:Flash安全配置限制
    */
    private function securityErrorHandler(event:SecurityErrorEvent):void {
      trace("SecurityError: " + event);
    }
 
    /**
    *方法名:ioErrorHandler
    *功能:IO错误
    */
    private function ioErrorHandler(event:IOErrorEvent):void {
      trace("IOError: " + event);
    }
 
    /**
    *方法名:XmlParse
    *功能:解析XML的简单测试
    */
    private function XmlParse():void {
      //用户Array的遍历
      for each(var user:UserInfo in userList){
        trace(user.getUid());
        trace(user.getTitle());
        trace(user.getBeginTime());
        trace(user.getEndTime());
        trace(user.getCurrentMoney());
        trace(user.getState());
        trace(user.getIsMember());
      }
    }
  }
}

代码说明UserInfo为包含user全部信息的实体类,BUserInfo则是
UserInfo实体的业务层基本业务类,其中包含返回所有用户列表的
GetUserInfoList()方法

热门栏目