Check the below sample program it will help you how to parse xml file in flex application.Below example will run in adobe Flex4. And I am displaying the parsed xml in Tab Navigator and DataGrid Components.I hope it will help you.
Below program will parse xml and create GUI based on xml content.You can also modify below program as per your requirement.
XML File
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <AE> <TableParameters> <snmpTargetAddressTable> <Parameter accessRight="read-only" description="Index 1 means main address, index 2 means secondary address." name="snmSubscriptionIndex" status="current"> <DataType> <IntegerType maxValue="2" minValue="1"/> </DataType> </Parameter> <Parameter accessRight="read-write" description="Combination of IP address and port number of a subscribed SNM." name="snmTargetUdpAddress" status="current"> <DataType> <StringType size="6"/> </DataType> </Parameter> </snmpTargetAddressTable> <detailedErrTable> <Parameter accessRight="read-only" description="The OID that was referenced in the failed request. Used as the key to access this table." name="requestedOid" status="current"> <DataType> <OIDType/> </DataType> </Parameter> <Parameter accessRight="read-only" description="An integer value describing the detailed failure reason." name="detailedErrorId" status="current"> <DataType> <IntegerType maxValue="2147483647" minValue="-2147483648"/> </DataType> </Parameter> <Parameter accessRight="read-only" description="UTC date and time when the error occurred." name="errorTimeStamp" status="current"> <DataType> <StringType size="8,11"/> </DataType> </Parameter> </detailedErrTable> </TableParameters> </AE>
Check the below Flex Program.
<?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" xmlns:net="flash.net.*" xmlns:local="*" minWidth="955" minHeight="600" xmlns:pack="pack.*" initialize="loadXML('rsc/test.xml')"> <fx:Declarations> <net:URLLoader id="urlLdr" complete="urlLdr_complete(event);" /> <mx:XMLListCollection id="xmlListColl" /> <!-- Place non-visual elements (e.g., services, value objects) here --> </fx:Declarations> <fx:Script> <![CDATA[ import mx.collections.ArrayCollection; import mx.collections.ArrayList; import mx.containers.VBox; import mx.containers.ViewStack; import mx.controls.AdvancedDataGrid; import mx.controls.Alert; import mx.controls.Button; import mx.controls.DataGrid; import mx.controls.Label; import mx.controls.advancedDataGridClasses.AdvancedDataGridColumn; import mx.controls.dataGridClasses.*; import mx.controls.dataGridClasses.DataGridColumn; import mx.events.*; import mx.events.ListEvent; import mx.utils.ArrayUtil; public namespace sitemapNS = "http://www.google.com/schemas/sitemap/0.84"; public var tabName:ArrayList = new ArrayList(); public var parameter:ArrayList; public var tabparameters:Dictionary; public var allTablesSelValues:Dictionary; [Bindable] public var arrayList:ArrayList; public var numChild:Number = 0; public var dataGrid:AdvancedDataGrid; private function loadXML(targetURL:String):void { urlLdr.load(new URLRequest(targetURL)); } private function urlLdr_complete(evt:Event):void { var xmlData:XML = new XML(URLLoader(evt.currentTarget).data); xmlListColl = new XMLListCollection(xmlData.children()); if(xmlListColl.length != 0) { if(xmlListColl.child("TableParameters")) { for each (var tableList:XML in xmlListColl.children()) { tabparameters = new Dictionary(); trace(tableList.name(),"TableName"); tabName.addItem(tableList.name()); parameter = new ArrayList() for each (var param:XML in tableList.children()) { parameter.addItem(param.attribute("name").toString()); } tabparameters[tableList.name()] = parameter; for each (var dataType:XML in param.children()) { trace(dataType.name(),"DataType"); } createTabs(tabparameters); } } } } public function createTabs(dict:Dictionary):void { for (var key:Object in tabparameters) { var newVBox:VBox = new VBox(); var newDataGrid:AdvancedDataGrid = new AdvancedDataGrid(); newVBox.label = key.toString() ; trace(key.toString(),"Keys"); var params:ArrayList = tabparameters[key]; trace(params,"Values"); var columnNames:ArrayCollection = new ArrayCollection(); for (var i:int = 0; i < params.length ; i++) { var dataGriDCol:AdvancedDataGridColumn = new AdvancedDataGridColumn(params.getItemAt(i).toString()); dataGriDCol.dataField = params.getItemAt(i).toString(); columnNames.addItem(dataGriDCol); } newDataGrid.columns = columnNames.toArray(); newVBox.addChild(newDataGrid); tabNaviId.addChild(newVBox); } } protected function addRow(event:MouseEvent):void { getSelectedTab(); } public function getSelectedTab():void { var selectedTab:VBox = tabNaviId.getItemAt(tabNaviId.selectedIndex) as VBox; createTable(selectedTab); } public function createTable(selTab:VBox):void { dataGrid = selTab.getChildAt(0) as AdvancedDataGrid; dataGrid.id = selTab.label; arrayList = new ArrayList() dataGrid.dataProvider = arrayList; dataGrid.editable = "true"; // dataGrid.addEventListener(MouseEvent.MOUSE_UP,getSelectedRows); dataGrid.selectionMode = "multipleRows"; dataGrid.allowMultipleSelection = true; } ]]> </fx:Script> <mx:Panel height="100%" width="100%" paddingTop="10" paddingLeft="10" verticalScrollPolicy="off" paddingRight="10" paddingBottom="10"> <mx:TabNavigator id="tabNaviId" width="622" height="274" > </mx:TabNavigator> <s:Panel width="437" height="118" skinClass="spark.skins.spark.SkinnableContainerSkin"> <s:Button x="54" y="5" label="Configure" width="107" height="28" click="addRow(event)"/> <s:Button x="203" y="6" label="Submit" width="88" height="28" /> <s:Button label="Cancel" width="72" height="28" x="328" y="6"/> </s:Panel> </mx:Panel> </s:Application>
