Flex 中 xml 与 ArrayCollection 之间的相互转换

本文介绍了一种Flex应用程序中实现XML数据与ArrayCollection对象之间的相互转换的方法。通过实例演示了如何从XML文件中解析数据并填充到ArrayCollection中,以及如何将ArrayCollection中的数据导出为XML格式。
xml 于 ArrayCollection 之间的相互转换

    <?xml version="1.0" encoding="utf-8"?>
    <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" creationComplete="application1_creationCompleteHandler()"
                   xmlns:s="library://ns.adobe.com/flex/spark" 
                   xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
        <fx:Script>
            <![CDATA[
                import mx.collections.ArrayCollection;
                import mx.controls.Alert;
                import mx.events.FlexEvent;
                import mx.rpc.events.FaultEvent;
                import mx.rpc.events.ResultEvent;

                private var xml:XML;
                [Bindable]
                private var dgdp:ArrayCollection=new ArrayCollection;
                protected function application1_creationCompleteHandler():void
                {
                    http.send();
                }

                protected function http_resultHandler(event:ResultEvent):void
                {

                    xml = event.result as XML;
                    for each(var xml:XML in event.result..des){
                        var o:Object=new Object();
                        o.id=xml.@id;
                        o.name=xml.@name;
                        o.score=xml.@score;
                        dgdp.addItem(o);
                    }
                    arrToXml();
                }

                protected function http_faultHandler(event:FaultEvent):void
                {
                    // TODO Auto-generated method stub

                }
                protected function arrToXml():void{
                    var root:XML=<root/>;
                    for(var i:int=0;i<dgdp.length;i++){
                        var node:XML=new XML(<node/>);
                        node.id=dgdp[i].id;
                        node.name=dgdp[i].name;
                        node.score=dgdp[i].score;
                        root.appendChild(node);
                    }
                    Alert.show(root.toXMLString());         
                }           
            ]]>
        </fx:Script>
        <fx:Declarations>
            <!-- 将非可视元素(例如服务、值对象)放在此处 -->
            <s:HTTPService id="http"
                           method="POST"
                           useProxy="false"
                           url="data/data.xml"
                           resultFormat="e4x"
                           result="http_resultHandler(event)"
                           fault="http_faultHandler(event)"/>
        </fx:Declarations>
        <s:DataGrid id="dg" dataProvider="{dgdp}" x="202" y="41" width="346" height="164" requestedRowCount="4">
            <s:columns>
                <s:ArrayList>
                    <s:GridColumn dataField="id" headerText="id"></s:GridColumn>
                    <s:GridColumn dataField="name" headerText="name"></s:GridColumn>
                    <s:GridColumn dataField="score" headerText="score"></s:GridColumn>
                </s:ArrayList>
            </s:columns>        
        </s:DataGrid>
    </s:Application>

data.xml

<?xml version="1.0" encoding="UTF-8"?>
<data value="test01">
    <data1 id="1" value="test01">
        <id id="1000" value="test02" />
        <name name="test1" value="test03" />
        <des id="1000" name="test1" score="75" classes="1class" value="test04" />
    </data1>
    <data2 id="2" value="test02">
        <id id="1001" value="test06" />
        <name name="test2" value="test07" />
        <des id="1001" name="test2" score="85" classes="2class" value="test08" />
    </data2>
</data>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值