Home > 语言编程 > flashAS实现远程服务器xml数据读取解析

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

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

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


XML格式:

<root>
? <username uid=”ceshi001″>
??? <title>sdfsdf</title>
??? <beginTime>2009-10-10</beginTime>
??? <endTime>2009-10-01</endTime>
??? <currentMoney>56456</currentMoney>
??? <state>良好</state>
??? <isMember>否</isMember>
? </username>
? <username uid=”ceshi002″>
??? <title>dfgdfgdfg</title>
??? <beginTime>2009-10-10</beginTime>
??? <endTime>2009-10-01</endTime>
??? <currentMoney>23</currentMoney>
??? <state>良好</state>
??? <isMember>否</isMember>
? </username>
</root>

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

主要代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
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()方法,具体可以参看的完整源代码。

完整源代码下载地址:
http://www.lidaren.com/code/FLashXML/src.zip

Categories: 语言编程 Tags: , , ,
  1. No comments yet.
  1. October 17th, 2009 at 11:08 | #1