最近在用到flex 读取xml 的功能,发现flex用法与以前的jsp的习惯差异还是很大,在此总结记录下:
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <root> <item> <id>item1</id> <value>v1</value> </item> <item> <id>item2</id> <value>v2</value> </item> </root>
方法一:利用<mx:xml>控件读取xml
test.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:XML id="myXml" source="test.xml" />
<mx:ComboBox x="266" y="137" labelField="id" dataProvider="{this.myXml.item}"/>
</mx:Application>
这里就读取了test.xml文件内容,并为ComboBox控件提供数据。
注:经测试这种方法在编译成swf文件时,已经将xml文件一起打包进swf运行文件了。是一种静态的读取。如果想在动态的读取可以采用下面的as3的读取方式。
方法二:利用as3动态读取xml
flash为了完全,是不允许访问本地文件,所以这里利用as读取的xml的方式也是通过http协议读取,此时要到以下两个 类:
1.URLRequest:一个http请求信息,这里用来建立被读取的xml请求信息。
2.URLLoader:加载(下载)的URLRequest中的信息。
详细代码如下:
test.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.controls.Alert;
private function init():void
{
//创建URLRequest类,用于接收XML信息;
var url:URLRequest=new URLRequest("test.xml");
//创建URLLoader类,用于加载XML信息;
var loader:URLLoader=new URLLoader();
//加载完成时运行处理xml函数
loader.addEventListener(Event.COMPLETE, dealXml);
loader.load(url);
}
private function dealXml(event:Event):void
{
var loader:URLLoader=event.target as URLLoader;
var myXmlList:XMLList=new XMLList(loader.data);
this.testComb.dataProvider=myXmlList.item;
this.testComb.labelField="id";
}
]]>
</mx:Script>
<mx:ComboBox id="testComb" x="266"
y="137"/>
</mx:Application>

218

被折叠的 条评论
为什么被折叠?



