XML TO ArrayCollection 兩種實(shí)現(xiàn)方式
更新時(shí)間:2009年06月15日 18:30:04 作者:
最近研究FLEX,在網(wǎng)上看過(guò)100遍同一篇文章,結(jié)果測(cè)試不通,不知道到底能不能跑通,最后翻資料自己試驗(yàn)處理。
一:
<?xml version="1.0" encoding="UTF-8"?>
<projects>
<node Country="暗暗啊" Gold="10" Silver="20" Bronze="30"/>
<node Country="白斑病" Gold="30" Silver="20" Bronze="10"/>
<node Country="常常廠" Gold="20" Silver="40" Bronze="60"/>
<node Country="賭東道" Gold="50" Silver="30" Bronze="10"/>
<node Country="餓餓額" Gold="15" Silver="18" Bronze="46"/>
<node Country="方法法" Gold="61" Silver="52" Bronze="38"/>
</projects>
<mx:HTTPService id="HTTPService1"
url="charts_ColumnChart.xml"
result="initFile(event)" showBusyCursor="true" method="post"
resultFormat="e4x"/>
import mx.collections.ArrayCollection;
import mx.rpc.events.ResultEvent;
private var ac:ArrayCollection = new ArrayCollection();
function initFile(event:ResultEvent):void{
for each(var p:XML in event.result..node){
var obj:Object=new Object();
obj.Country=p.@Country;
obj.Gold=p.@Gold;
obj.Silver=p.@Silver;
obj.Bronze=p.@Bronze;
ac.addItem(obj);
}
}
二:
<?xml version="1.0" encoding="UTF-8"?>
<projects>
<node>
<Country>暗暗a</Country>
<Gold>10</Gold>
<Silver>20</Silver>
<Bronze>30</Bronze>
</node>
<node>
<Country>暗b啊</Country>
<Gold>10</Gold>
<Silver>20</Silver>
<Bronze>30</Bronze>
</node>
<node>
<Country>暗c啊</Country>
<Gold>10</Gold>
<Silver>20</Silver>
<Bronze>30</Bronze>
</node>
</projects>
<mx:HTTPService id="HTTPService2"
url="charts_ColumnChart1.xml"
result="initFile1(event)" showBusyCursor="true" method="post"
resultFormat="e4x"/>
import mx.collections.ArrayCollection;
import mx.rpc.events.ResultEvent;
private var ac1:ArrayCollection = new ArrayCollection();
function initFile1(event:ResultEvent):void{
for each(var p:XML in event.result..node){
var xmlobj:XMLList=new XMLList(p);
ac1.addItem(xmlobj);
}
}
XMLList在默認(rèn)包中,不用import
event.result..node是resultFormat="e4x"的寫(xiě)法,支持event.result(結(jié)果)..節(jié)點(diǎn)名
例如:
<a>
<b><c><d><e></e></d></c></b>
<b><c><d><e></e></d></c></b>
</a>
event.result..e 直接可以找到兩個(gè)E節(jié)點(diǎn)對(duì)象
建議使用方法二進(jìn)行XML映射,這樣基本是自動(dòng)映射,不用手動(dòng)對(duì)應(yīng)屬性。唯一不足XML代碼量增大!
目前本人只測(cè)試過(guò)這兩種xml實(shí)現(xiàn)方式,還是沒(méi)有脫離for循環(huán),沒(méi)有找到合適FLEX支持轉(zhuǎn)換類(lèi),研究ING 有結(jié)果與大家分享。
復(fù)制代碼 代碼如下:
<?xml version="1.0" encoding="UTF-8"?>
<projects>
<node Country="暗暗啊" Gold="10" Silver="20" Bronze="30"/>
<node Country="白斑病" Gold="30" Silver="20" Bronze="10"/>
<node Country="常常廠" Gold="20" Silver="40" Bronze="60"/>
<node Country="賭東道" Gold="50" Silver="30" Bronze="10"/>
<node Country="餓餓額" Gold="15" Silver="18" Bronze="46"/>
<node Country="方法法" Gold="61" Silver="52" Bronze="38"/>
</projects>
<mx:HTTPService id="HTTPService1"
url="charts_ColumnChart.xml"
result="initFile(event)" showBusyCursor="true" method="post"
resultFormat="e4x"/>
import mx.collections.ArrayCollection;
import mx.rpc.events.ResultEvent;
private var ac:ArrayCollection = new ArrayCollection();
function initFile(event:ResultEvent):void{
for each(var p:XML in event.result..node){
var obj:Object=new Object();
obj.Country=p.@Country;
obj.Gold=p.@Gold;
obj.Silver=p.@Silver;
obj.Bronze=p.@Bronze;
ac.addItem(obj);
}
}
二:
復(fù)制代碼 代碼如下:
<?xml version="1.0" encoding="UTF-8"?>
<projects>
<node>
<Country>暗暗a</Country>
<Gold>10</Gold>
<Silver>20</Silver>
<Bronze>30</Bronze>
</node>
<node>
<Country>暗b啊</Country>
<Gold>10</Gold>
<Silver>20</Silver>
<Bronze>30</Bronze>
</node>
<node>
<Country>暗c啊</Country>
<Gold>10</Gold>
<Silver>20</Silver>
<Bronze>30</Bronze>
</node>
</projects>
<mx:HTTPService id="HTTPService2"
url="charts_ColumnChart1.xml"
result="initFile1(event)" showBusyCursor="true" method="post"
resultFormat="e4x"/>
import mx.collections.ArrayCollection;
import mx.rpc.events.ResultEvent;
private var ac1:ArrayCollection = new ArrayCollection();
function initFile1(event:ResultEvent):void{
for each(var p:XML in event.result..node){
var xmlobj:XMLList=new XMLList(p);
ac1.addItem(xmlobj);
}
}
XMLList在默認(rèn)包中,不用import
event.result..node是resultFormat="e4x"的寫(xiě)法,支持event.result(結(jié)果)..節(jié)點(diǎn)名
例如:
復(fù)制代碼 代碼如下:
<a>
<b><c><d><e></e></d></c></b>
<b><c><d><e></e></d></c></b>
</a>
event.result..e 直接可以找到兩個(gè)E節(jié)點(diǎn)對(duì)象
建議使用方法二進(jìn)行XML映射,這樣基本是自動(dòng)映射,不用手動(dòng)對(duì)應(yīng)屬性。唯一不足XML代碼量增大!
目前本人只測(cè)試過(guò)這兩種xml實(shí)現(xiàn)方式,還是沒(méi)有脫離for循環(huán),沒(méi)有找到合適FLEX支持轉(zhuǎn)換類(lèi),研究ING 有結(jié)果與大家分享。
相關(guān)文章
Flex DataGrid DataGridColumn數(shù)據(jù)顏色多樣化-類(lèi)型替換
用得多了,發(fā)覺(jué)自己了解的真的是九牛之一毛都沒(méi)有,最近用到了從后臺(tái)讀出數(shù)據(jù)時(shí)顯示的問(wèn)題,相信很多人都有用整形數(shù)據(jù)來(lái)代替字符串?dāng)?shù)據(jù)的情況2009-06-06Flex 畫(huà)面快照截圖及顯示實(shí)現(xiàn)代碼
在軟件開(kāi)發(fā)過(guò)程中經(jīng)常會(huì)有對(duì)畫(huà)面進(jìn)行快照截圖的需求,例如把畫(huà)面當(dāng)前顯示的狀態(tài)捕捉下來(lái)保存成圖片。接下來(lái)討論如何在flex中對(duì)畫(huà)面進(jìn)行截圖,畫(huà)面截圖完成后怎樣再顯示到畫(huà)面上。2009-10-10Flex 全屏組件 部分全屏的實(shí)現(xiàn)代碼
一般情況下,F(xiàn)lex全屏是指將整個(gè)舞臺(tái)全屏,而不是待定的組件全屏.網(wǎng)上的例子也一般是指這種情況的.2009-09-09Flex 創(chuàng)建一個(gè)自定義風(fēng)格的HRule或VRule
Flex中如何通過(guò)strokeWidth, strokeColor和shadowColor樣式,創(chuàng)建一個(gè)自定義風(fēng)格的HRule或VRule2009-06-06