XML TO ArrayCollection 兩種實(shí)現(xiàn)方式
更新時(shí)間:2009年06月15日 18:30:04 作者:
最近研究FLEX,在網(wǎng)上看過100遍同一篇文章,結(jié)果測試不通,不知道到底能不能跑通,最后翻資料自己試驗(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"的寫法,支持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)對象
建議使用方法二進(jìn)行XML映射,這樣基本是自動映射,不用手動對應(yīng)屬性。唯一不足XML代碼量增大!
目前本人只測試過這兩種xml實(shí)現(xiàn)方式,還是沒有脫離for循環(huán),沒有找到合適FLEX支持轉(zhuǎn)換類,研究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"的寫法,支持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)對象
建議使用方法二進(jìn)行XML映射,這樣基本是自動映射,不用手動對應(yīng)屬性。唯一不足XML代碼量增大!
目前本人只測試過這兩種xml實(shí)現(xiàn)方式,還是沒有脫離for循環(huán),沒有找到合適FLEX支持轉(zhuǎn)換類,研究ING 有結(jié)果與大家分享。
相關(guān)文章
Flex 自動獲取焦點(diǎn) 監(jiān)聽全局鍵盤事件
Flex 編程注意之自動獲取焦點(diǎn)、監(jiān)聽全局鍵盤事件2009-07-07
Flex Javascript交互實(shí)現(xiàn)代碼
刪除swf這里需要提醒下,因?yàn)閑mbedSWF是替換標(biāo)簽,而不是填充。2009-06-06
Flex與.NET互操作(十二):FluorineFx.Net的及時(shí)通信應(yīng)用(Remote Shared Objects
遠(yuǎn)程共享對象(Remote Shared Objects) 可以用來跟蹤、存儲、共享以及做多客戶端的數(shù)據(jù)同步操作。只要共享對象上的數(shù)據(jù)發(fā)生了改變,將會把最新數(shù)據(jù)同步到所有連接到該共享對象的應(yīng)用程序客戶端。2009-06-06
Flex與.NET互操作(八) 使用FluorineFx網(wǎng)關(guān)實(shí)現(xiàn)遠(yuǎn)程訪問
關(guān)于遠(yuǎn)程訪問在本系列文章中陸續(xù)的寫了不少示例了,本文沒有準(zhǔn)備深入的去探討,為了鞏固FluorineFx網(wǎng)關(guān)的學(xué)習(xí)和使用。2009-06-06

