最近一直在网上转悠,网上的flex文章越来越多了,但是都使一些关于DB、控件、httpservice之类的文章,其实flex以xml作为数据源来进行操作,也是比较重要的。
正好前一阵子在研究E4X与Flex的关系,所以打算总结一下,有说的不对的地方,还请大家多多原谅。
一、最简单模式:Flex通过httpservice和dataProvider进行数据传输
Xml格式如下:
value1
valve2
……………………………………………
……………………………………………
在Flex中有一个DataGrid,这样就可以用httpservice来使DataGrid获取xml的数据了。
Flex端如下:
title="Blog Details">
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
※其中红字部分必须一直,由于这个sample比较简单,所以kenshin就不深入研究了。
※黄字部分一定要按照xml的结构书写。
这样在run 这个Flex的时候,在DataGrid中就会显示NodeA&NodeB的内容即value1&value2
二、稍微复杂一些模式
Xml端代码如下:
value1http://www.k-zone.cn/zblog
关注Flex,Java,DotNet,Web Desgin
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
Flex端如下:
layout="absolute"
creationComplete="feedRequest.send()" >
id="feedRequest"
url=" http://localhost:8080/text.xml"
useProxy="false" />
title="{feedRequest.lastResult.rss.channel.title}">
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
如果想要得到上面的xml中title的值,只需按照蓝字部分书写即可得到Title的value。
以此类推如果想要得到xml中link的内容,应该按如下书写
feedRequest.lastResult.rss.channel.link
三、复杂一些的模式,即xml的格式比较特殊
Xml端代码如下:
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
如果大家想要得到SubSectionA1的内容,就显得无从下手了。其实用E4X在actionscript3中已经支持的非常完美了。并且Flex builder2提供的help也有这样的例子。但是我找了一下,没有这样的例子,所以自己研究了一下。并且把结果告诉大家。
要显示SubSectionA1的内容。Flex端如下书写:
var loader:URLLoader = new URLLoader();
var request:URLRequest = new URLRequest("data/sampleData.xml");
loader.load(request);
loader.addEventListener(Event.COMPLETE, onComplete);
}
public function onComplete(event:Event):void {
var externalXML:XML;
var loader:URLLoader = URLLoader(event.target);
externalXML = new XML(loader.data);
trace(externalXML. SectionA [0].@ SubSectionA1);
}
其中粗体红字SubSectionA1的内容了。其中externalXML. SectionA [0].@ SubSectionA1中的[0]是xml的record的条数。@后面的就是想要得到的子节点的值。其内容可以是SubSectionA2、SubSectionB等等的值。部分就是
关于xml的格式在继续引伸一下。以下的格式
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
相当于如下的格式:
value1” SubSectionA1>
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。