Flex讀取外部XML文件的四種方法
本文和大家重點討論一下Flex讀取外部XML文件的幾種方法,因為Flex支持強大的E4X功能,所以在flex中xml文件的操作非常簡單。下面總結一下常用的讀取XML配置文件的方法,希望對你有所幫助。
Flex讀取外部XML文件的幾種方法
因為Flex支持強大的E4X功能,所以在flex中xml文件的操作非常簡單。下面,總結一下常用的讀取XML配置文件的方法:
1使用Model標簽形式
首先聲明Model標簽:
- <mx:Modelidmx:Modelid="danxuan"source="myData/danxuan.xml"/>
- <mx:DataGriddataProvidermx:DataGriddataProvider="{danxuan.ti}">
- </mx:DataGrid>
2使用XML標簽形式
- <mx:XMLidmx:XMLid="danxuan"source="myData/danxuan.xml"/>
- <mx:DataGriddataProvidermx:DataGriddataProvider="{danxuan.ti}">
3使用HttpService
- <mx:HTTPServiceidmx:HTTPServiceid="danxuan"url="myData/danxuan.xml"
- result="resultHandler(event)"/>
- privatefunctionresultHandler(event:ResultEvent):void
- {
- vardp:ArrayCollection=event.resultasArrayCollection;
- }
同時,在標簽Application的createComplete事件中添加danxuan.send();語句(其中“danxuan”是mx:HTTPService的id)調用Http請求。
即:<mx:Applicationxmlns:mx="http://www.adobe.com/2006/mxml"createComplete="danxuan.send();">
4使用URLLoader
有的時候我們希望用xml作為配置文件來動態(tài)配置我們的系統。雖然flexSDK提供了一個只能用在在mxml文件中<xml/>、<model/>標簽,這些標簽的source屬性可以讀取外部的xml文件,但是這樣的方式會使xml文件嵌入到生成的swf文件中。這樣做的結果就是發(fā)布后即使修改了xml的內容對程序也沒有影響。這樣做沒有達到使用外部xml文件的目的。要想實現動態(tài)讀取xml文件需要使用到URLLoader這個類,這個類位于flash.net包中。
一、創(chuàng)建URLRequest對象
要想使用URLLoader讀取外部的xml,必須調用URLLoader的load()函數。這個函數有一個參數就是URLRequest,所以必須先創(chuàng)建一個URLRequest對象。
varurl:URLRequest=newURLRequest("myData/danxuan.xml");
其中URLRequest的參數必須是一個有效的url。
二、讀取外部xml
1.創(chuàng)建URLLoader對象。
varloader:URLLoader=newURLLoader();
2.為新創(chuàng)建的對象注冊事件監(jiān)聽,我們需要監(jiān)聽的是Event.COMPLETE事件,這個事件代表讀取xml文件完成。
loader.addEventListener(Event.COMPLETE,onComplete);
onComplete是Event.COMPLETE事件的處理函數,當發(fā)生Event.COMPLETE事件的時候會調用這個函數。
3.調用load函數
loader.load(url);
參數url就是前面創(chuàng)建的URLRequest對象。
三、事件處理函數onComplete
函數的完整定義是這個樣子的:
privatefunctiononComplete(event:Event):void{}
面已經把這個函數注冊給URLLoader對象的Event.COMPLETE事件了。當發(fā)生Event.COMPLETE事件時,這個函數就會被調用。接下來的問題就是怎么得到取到的xml數據了。
首先把onComplete函數的參數event的target屬性轉換成URLLoader對象
varresult:URLLoader=URLLoader(event.target);
然后再把這個對象的data屬性轉換成xml對象
datas=XML(result.data);
這樣就可以把danxuan.xml的內容讀取到了datas中了。
使用這種方式可以動態(tài)的讀取xml文件。取到的內容可以動態(tài)配置程序,提供動態(tài)的數據源。至于具體怎樣應用就看自己的需求了。
- varurlLoader:URLLoader=newURLLoader();
- urlLoader.addEventListener(Event.COMPLETE,handleURLLoaderCompleted);
- urlLoader.load(newURLRequest("myData/duanxuan.xml"));
- privatefunctionhandleURLLoaderCompleted(event:Event):void
- {
- varloader:URLLoader=event.targetasURLLoader;
- xml=XML(loader.data);
- }
- </mx:DataGrid>
【編輯推薦】
- 技術分享 如何進行Flex Spring整合
- Flex安全沙箱問題解決方法
- Flex及FlexBuilder2.0開發(fā)環(huán)境詳解
- FlexBuilder3.0與Eclipse3.4的完美結合
- Flex內存泄露解決方法和內存釋放優(yōu)化原則