关于将XML数据转为ArrayCollection的问题

在我的XML文件中

<report>
    <daily_incomes>
        <daily_income>
            <date>2009-06-11</date>
            <income>100</income>
        </daily_income>
    </daily_incomes>
</report>

 

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">

<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.rpc.events.ResultEvent;
[Bindable]
private var showData:ArrayCollection;
private function show(event:ResultEvent):void {
    showData = event.result.report.daily_incomes.daily_income;
}
]]>
</mx:Script>
    
    <mx:HTTPService id="myService" url="http://localhost:3000/ex.xml" result="show(event)"/>
    </mx:Text>
    <mx:Button click="myService.send()" x="10" y="-2" label="Button"/>
    <mx:List x="10" y="28" dataProvider="{showData}"></mx:List>
</mx:Application>

 

daily_income想作为Arraycollection的一个元素被传入,但是这样是转化不了的.

不过把daily_income的个数改为超过一个就可以了:

<report>
    <daily_incomes>
        <daily_income>
            <date>2009-06-11</date>
            <income>0</income>
        </daily_income>
        <daily_income>
            <date>2009-06-12</date>
            <income>1</income>
        </daily_income>
    </daily_incomes>
</report>

请问如何让xml数组里,只有一个值时Flax也能转为ArrayCollection

 

 

其实就是加一个判断,按你的xml改了下:

[code="js"]if(event.result.report.daily_incomes.daily_income is ObjectProxy)

{

showData.addItem(event.result.report.daily_incomes.daily_income);

}

else

{

showData = event.result.report.daily_incomes.daily_income;

} [/code]

可能是它本身设计的有问题吧

你可以判断一下呗,

如果是数量只有一个的话,就转换成确定的一个

加一个handler:

[code="js"]
[Bindable]
private var flvData:ArrayCollection=new ArrayCollection();
private function resultHandler(event:ResultEvent):void
{
if(event.result.minwt.doc is ObjectProxy)
{
flvData.addItem(event.result.minwt.doc);
}
else
{
flvData=event.result.minwt.doc;
}
this.myDataGrid.dataProvider=flvData;
this.mylb.text=this.flvData.getItemAt(0).docTitle.toString();
}

[/code]