這篇文章將為大家詳細講解有關Flex如何動態(tài)讀取外部XML文件,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
企業(yè)建站必須是能夠以充分展現(xiàn)企業(yè)形象為主要目的,是企業(yè)文化與產(chǎn)品對外擴展宣傳的重要窗口,一個合格的網(wǎng)站不僅僅能為公司帶來巨大的互聯(lián)網(wǎng)上的收集和信息發(fā)布平臺,成都創(chuàng)新互聯(lián)公司面向各種領域:成都石涼亭等網(wǎng)站設計、營銷型網(wǎng)站建設解決方案、網(wǎng)站設計等建站排名服務。
Flex動態(tài)讀取外部xml文件
在Flex中xml文件是使用頻率非常高的,因為在Flex中xml文件的操作非常簡單。有的時候我們希望用xml作為配置文件來動態(tài)配置我們的系統(tǒng)。雖然FlexSDK提供了一個只能用在在mxml文件中<xml/>標簽,這個標簽的source屬性可以讀取外部的xml文件,但是這樣的方式會使xml文件嵌入到生成的swf文件中。這樣做的結(jié)果就是發(fā)布后即使修改了xml的內(nèi)容對程序也么有影響。這樣做沒有達到使用外部xml文件的目的。要想實現(xiàn)動態(tài)讀取xml文件需要使用到URLLoader這個類,這個類位于flash.net包中。
一、創(chuàng)建URLRequest對象
要想使用URLLoader讀取外部的xml,必須調(diào)用URLLoader的load()函數(shù)。這個函數(shù)有一個參數(shù)就是URLRequest,所以必須先創(chuàng)建一個URLRequest對象。
varurl:URLRequest=newURLRequest("TreeData.xml");
其中URLRequest的參數(shù)必須是一個有效的url,因為這個文件在和生成的swf在同一個目錄下,所以直接寫了文件名,TreeData.xml是外部xml文件的文件名。如果在其他目錄下文件名就必須帶路徑了。
二、讀取外部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事件的處理函數(shù),當發(fā)生Event.COMPLETE事件的時候會調(diào)用這個函數(shù)。
3.調(diào)用load函數(shù)
loader.load(url);
參數(shù)url就是前面創(chuàng)建的URLRequest對象。
三、事件處理函數(shù)onComplete
函數(shù)的完整定義是這個樣子的:
privatefunctiononComplete(event:Event):void{}
前面已經(jīng)把這個函數(shù)注冊給URLLoader對象的Event.COMPLETE事件了。當發(fā)生Event.COMPLETE事件時,這個函數(shù)就會被調(diào)用。接下來的問題就是怎么得到取到的xml數(shù)據(jù)了。
首先把onComplete函數(shù)的參數(shù)event的target屬性轉(zhuǎn)換成URLLoader對象
varresult:URLLoader=URLLoader(event.target);
然后再把這個對象的data屬性轉(zhuǎn)換成xml對象
datas=XML(result.data);
這樣就可以把TreeData.xml的內(nèi)容讀取到了datas中了。
后記
使用這種方式可以動態(tài)的讀取xml文件。取到的內(nèi)容可以動態(tài)配置程序,提供動態(tài)的數(shù)據(jù)源。至于具體怎樣應用就看自己的需求了。
完整的代碼:
viewplaincopytoclipboardprint? <?xmlversionxmlversion="1.0"encoding="utf-8"?> <mx:Applicationxmlns:mxmx:Applicationxmlns:mx="http://www.adobe.com/2006/mxml"layout="absolute"creationComplete="init()"> <mx:Script> <!--[CDATA[ [Bindable] privatevardatas:XML=newXML(); privatefunctioninit():void { varurl:URLRequest=newURLRequest("TreeData.xml"); varloader:URLLoader=newURLLoader(); loader.addEventListener(Event.COMPLETE,onComplete); loader.load(url); } privatefunctiononComplete(event:Event):void{ varresult:URLLoader=URLLoader(event.target); datas=XML(result.data); } ]]--> </mx:Script> <mx:XMLidmx:XMLid="treeData"source="TreeData.xml"/> <mx:Treexmx:Treex="23.5"y="36"width="214"height="407" dataProvider="{datas.node}"labelField="@label"/> <mx:Treexmx:Treex="319.5"y="36"width="214"height="407" dataProvider="{treeData.node}"labelField="@label"/> </mx:Application> <?xmlversionxmlversion="1.0"encoding="utf-8"?> <mx:Applicationxmlns:mxmx:Applicationxmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"creationComplete="init()"> <mx:Script> <!--[CDATA[ [Bindable] privatevardatas:XML=newXML(); privatefunctioninit():void { varurl:URLRequest=newURLRequest("TreeData.xml"); varloader:URLLoader=newURLLoader(); loader.addEventListener(Event.COMPLETE,onComplete); loader.load(url); } privatefunctiononComplete(event:Event):void{ varresult:URLLoader=URLLoader(event.target); datas=XML(result.data); } ]]--> </mx:Script> <mx:XMLidmx:XMLid="treeData"source="TreeData.xml"/> <mx:Treexmx:Treex="23.5"y="36"width="214"height="407" dataProvider="{datas.node}"labelField="@label"/> <mx:Treexmx:Treex="319.5"y="36"width="214"height="407" dataProvider="{treeData.node}"labelField="@label"/> </mx:Application>
用到的TreeData.xml的內(nèi)容:
viewplaincopytoclipboardprint? <?xmlversionxmlversion="1.0"encoding="utf-8"?> <root> <nodelabelnodelabel="00 TOP"/> <nodelabelnodelabel="01 open"> <nodelabelnodelabel="01backup"/> <nodelabelnodelabel="02edit"/> </node> <nodelabelnodelabel="execute"/> </root> <?xmlversionxmlversion="1.0"encoding="utf-8"?> <root> <nodelabelnodelabel="00 TOP"/> <nodelabelnodelabel="01 open"> <nodelabelnodelabel="01backup"/> <nodelabelnodelabel="02edit"/> </node> <nodelabelnodelabel="execute"/> </root>
代碼補充說明:
代碼中用兩種方式讀取外部的xml文件為兩個Tree控件提供數(shù)據(jù)源,可以對比一下兩種方式的不同。
關于“Flex如何動態(tài)讀取外部XML文件”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
新聞名稱:Flex如何動態(tài)讀取外部XML文件
轉(zhuǎn)載源于:http://jinyejixie.com/article2/ppehic.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設、做網(wǎng)站、網(wǎng)站策劃、App設計、、自適應網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)