XML to arraycollection

464 views
Skip to first unread message

Sindhu

unread,
Apr 27, 2009, 3:41:02 AM4/27/09
to Flex India Community
Can someone tell me how to convert an xml file into an array
collection using actionscript.....?

Regards,
Sindhu.

Jagadish M

unread,
Apr 27, 2009, 10:48:35 PM4/27/09
to flex_...@googlegroups.com
1.xml

<employeeDB>
    <tblEmpDetails>
        <empdetails>
                 <empId>1001</empId>
                 <empname>J</empname>
                 <empsalary>10000</empsalary>
                 <empgender>Male</empgender>
        </empdetails>
        <empdetails>
                 <empId>1002</empId>
                 <empname>Ja</empname>
                 <empsalary>20000</empsalary>
                 <empgender>Male</empgender>
         </empdetails>
         <empdetails>
                 <empId>1003</empId>
                <empname>Jag</empname>
                <empsalary>30000</empsalary>
                <empgender>Male</empgender>
         </empdetails>
         <empdetails>
                 <empId>1004</empId>
                 <empname>Jaga</empname>
                 <empsalary>60000</empsalary>
                 <empgender>FeMale</empgender>
            </empdetails>
         <empdetails>
                 <empId>1004</empId>
                 <empname>Jagan</empname>
                 <empsalary>65000</empsalary>
                 <empgender>FeMale</empgender>
            </empdetails>
       </tblEmpDetails>
 </employeeDB>

display.mxml

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" initialize="srv.send()" >
    <mx:Script>
        <![CDATA[
            import mx.collections.ArrayCollection;
            import mx.controls.Alert;
            import mx.controls.Label;
            import mx.rpc.events.ResultEvent;
            import mx.rpc.events.FaultEvent;
            var arremp:ArrayCollection=new ArrayCollection;
            private function rsevent(e:ResultEvent)
            {     
                arremp=e.result.employeeDB.tblEmpDetails.empdetails;
                dg.dataProvider=arremp;
                dg.rowCount=arremp.length;
            }
             private function flevent(e:FaultEvent)
            {
                Alert.show('fault '+e.fault.toString());
            }
            private function rep()
            {
                lb.text=dg.selectedItem.empname;
            }
        ]]>
    </mx:Script>
    <mx:HTTPService id="srv" url="1.xml" result="rsevent(event)"  fault="flevent(event)"/>
    <mx:DataGrid id="dg"  x="239" y="29" change="rep()" />   
    <mx:Label id="lb" width="500"  x="258" y="377"/>
</mx:Application>
--
Thanks & Regards,

Jagan Mady's

Vir@t

unread,
Apr 29, 2009, 2:14:29 AM4/29/09
to Flex India Community
Hello

In one of my application i require to convert XML to ArrayCollection

I found one code snippet which help me to do same.

// Code Snippet

private function xmlToArrayCollection ( xml : XML ) : ArrayCollection
{
var xmlDoc : XMLDocument = new XMLDocument(xml.toString());
var decoder : SimpleXMLDecoder = new SimpleXMLDecoder(true)
var resultObj : Object = decoder.decodeXML(xmlDoc);

var menuArrColl : ArrayCollection = new ArrayCollection( new
Array( resultObj.menu.menuItems.menuItem ) ); // dynamic path
return menuArrColl;
}

make sure that u pass actual source items of the resultObj.

like here i have pass // resultObj.menu.menuItems.menuItem //
to generate ArrayCollection it may defer in your xml structure.

may it helps you.

Thanks
Virat

Sindhu

unread,
Apr 28, 2009, 3:46:37 PM4/28/09
to Flex India Community
THank You Jagadish:)

On Apr 28, 7:48 am, Jagadish M <jagan.f...@gmail.com> wrote:
> *1.xml*
> *display.mxml*

Devaraj

unread,
Apr 27, 2009, 10:38:18 AM4/27/09
to Flex India Community

natarajan santosh

unread,
May 16, 2009, 2:15:28 AM5/16/09
to flex_...@googlegroups.com
Hi Sindhu



<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" initialize="srv.send()" >
    <mx:Script>
        <![CDATA[
            import mx.collections.ArrayCollection;
            import mx.controls.Alert;
            import mx.controls.Label;
            import mx.rpc.events.ResultEvent;
            import mx.rpc.events.FaultEvent;
            public var arremp:ArrayCollection=new ArrayCollection;
            [Bindable]
            public var idArray:ArrayCollection = new ArrayCollection();

            private function rsevent(e:ResultEvent):void
            {    
                var resXML:XML = e.result as XML;
                for each(var s1:XML in resXML.tblEmpDetails.empdetails.empId)
                {
                    idArray.addItem(s1);
                }
                for(var i:int=0;i<idArray.length;i++)
                 {
                    Alert.show("id = "+idArray.getItemAt(i));
                 }

               
            }
             private function flevent(e:FaultEvent):void
            {
                Alert.show('fault '+e.fault.toString());
            }
            private function rep():void
            {
                lb.text=dg.selectedItem.empname;
            }
        ]]>
    </mx:Script>
    <mx:HTTPService id="srv" url="employeexml.xml" result="rsevent(event)"  fault="flevent(event)" resultFormat="e4x"/>

    <mx:DataGrid id="dg"  x="239" y="29" change="rep()" />  
    <mx:Label id="lb" width="500"  x="258" y="377"/>
</mx:Application>


u can convert from XML to ArrayCollection by using for each

here i converted empid ArrayCollection from XML
similarly u can convert empname , empsalary , empgender

Any doubts mail us

I hope it will help u


Regards
NatarajanV



Reply all
Reply to author
Forward
0 new messages