周日CG接到一位网路上的朋友的问题,要求用flash ActionScript实现从服务端读取动态生成的数据并且进行解析,输入到用户界面的小程序今天代码放上来与大家分享,实现过程很简单,供初学者学习,也希望老鸟指正。
要求:BS结构下,客户端使用flash从服务端读取动态生成的XML格式数据,并将获取的数据进行解析和发送到界面显示。
XML格式:
代码如下 | 复制代码 |
|
要求解析成单个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()方法