加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Flex读取XML文件的两种方法

发布时间:2020-12-15 05:17:01 所属栏目:百科 来源:网络整理
导读:? Flex读取XML文件主要通过以下两种方式: (1) 通过HTTPService (2) 通过URLLoader 代码如下: mxml代码 ?xml version="1.0" encoding="utf-8"? mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()" mx:
?

Flex读取XML文件主要通过以下两种方式:

(1) 通过HTTPService
(2) 通过URLLoader

代码如下:

mxml代码

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()">
<mx:Script>
?? <![CDATA[
??? import mx.collections.ArrayCollection;
??? import mx.rpc.events.ResultEvent;
??? import mx.rpc.http.HTTPService;
?
??? public const xmlUrl:String = "config.xml";
??? [Bindable] private var colors1:ArrayCollection;
??? [Bindable] private var colors2:XML;
?
??? private function init():void{
???? //方法一:通过HTTPService
???? var service:HTTPService = new HTTPService();
???? service.url = xmlUrl;
???? service.addEventListener(ResultEvent.RESULT,resultHandler);
???? service.send();
? ?
???? //方法二:通过URLLoader
???? var request:URLRequest = new URLRequest(xmlUrl);
???? var loader:URLLoader = new URLLoader(request);
???? loader.addEventListener(Event.COMPLETE,loaderCompleteHandler);
??? }
?
??? private function resultHandler(event:ResultEvent):void{
???? colors1 = event.result.colors.color;
??? }
?
??? private function loaderCompleteHandler(event:Event):void{
???? colors2 = new XML(event.target.data);
??? }
?? ]]>
</mx:Script>
<mx:List x="100" y="150" dataProvider="{colors1}" labelField="name">
</mx:List>
<mx:List x="300" y="150" dataProvider="{colors2.color}" labelField="@name">
</mx:List>
</mx:Application>


config.xml文件

<colors>
<color name="LightGrey" value="#D3D3D3"/>
<color name="Silver" value="#C0C0C0"/>
<color name="DarkGray" value="#A9A9A9"/>
<color name="Gray" value="#808080"/>
<color name="DimGray" value="#696969"/>
<color name="Black" value="#000000"/>
</colors>

注:注意两种方式返回结果的差异

?

==================================================

Flex可以很方便的将XML映射为对象,但是它有一个问题,如果我们定义了复数个相同的tag的话,它可以将其映射为ArrayCollection,如果Tag只有一条的话,它会将其映射为ObjectProxy。

所以比较加判断:

if(event.result.employee.student is ObjectProxy){
? ? ? ? ? ? ? ? DataArray.addItem(event.result.employee.student);
? ? ? ? }else{
? ? ? ? ? ? ? ? DataArray = event.result.employee.student as ArrayCollection;
? ? ? ? }

上文例子
? if(event.result.colors.color is ObjectProxy){?
?? ?colors1 = new ArrayCollection([event.result.colors.color]);
?? //colors1.addItem(event.result.colors.color);?
? }else{?
? colors1 = event.result.colors.color as ArrayCollection;?
? }?

无数据时也要判断

?

http://www.cxybl.com/html/flex/2011_0612_696.html

http://topic.csdn.net/u/20090927/10/47032cc1-b0ef-4e0d-ab08-5f05a4117570.html

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读