Similar to the previous post, “Converting XML to objects using the Flex HTTPService MXML tag“, the following example shows how you can use the decodeXML()
method in the SimpleXMLDecoder class to convert an XMLDocument object into an ActionScript Object object.
Full code after the jump.
<?xml version="1.0" encoding="utf-8"?> <!-- http://blog.flexexamples.com/2007/09/19/converting-xml-to-objects-using-the-flex-simplexmldecoder-class/ --> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" verticalAlign="middle" backgroundColor="white" creationComplete="serv.send();"> <mx:Script> <![CDATA[ import mx.rpc.events.FaultEvent; import mx.rpc.events.ResultEvent; import mx.rpc.xml.SimpleXMLDecoder; private function serv_result(evt:ResultEvent):void { /* Convert XMLNode to XMLDocument. */ var xmlStr:String = evt.result.toString(); var xmlDoc:XMLDocument = new XMLDocument(xmlStr); var decoder:SimpleXMLDecoder = new SimpleXMLDecoder(true); var resultObj:Object = decoder.decodeXML(xmlDoc); /* Assign the values... */ nameText.text = resultObj.album.name; img0Text.text = resultObj.album.images.image[0]; img1Text.text = resultObj.album.images.image[1]; img2Text.text = resultObj.album.images.image[2]; } private function serv_fault(evt:FaultEvent):void { // Show the error label. error.text += evt.fault.faultString; error.visible = true; // Hide the form. form.visible = false; } ]]> </mx:Script> <mx:String id="XML_URL">album.xml</mx:String> <mx:HTTPService id="serv" url="{XML_URL}" resultFormat="xml" result="serv_result(event);" fault="serv_fault(event);" /> <mx:ApplicationControlBar dock="true"> <mx:Label text="{XML_URL}" /> </mx:ApplicationControlBar> <mx:Label id="error" color="red" fontSize="36" fontWeight="bold" visible="false" includeInLayout="{error.visible}"/> <mx:Form id="form" includeInLayout="{form.visible}"> <mx:FormItem label="resultObj.album.name:"> <mx:Label id="nameText" /> </mx:FormItem> <mx:FormItem label="resultObj.album.images.image[0]:"> <mx:Label id="img0Text" /> </mx:FormItem> <mx:FormItem label="resultObj.album.images.image[1]:"> <mx:Label id="img1Text" /> </mx:FormItem> <mx:FormItem label="resultObj.album.images.image[2]:"> <mx:Label id="img2Text" /> </mx:FormItem> </mx:Form> </mx:Application>
<?xml version="1.0" encoding="utf-8"?> <album> <name>One</name> <images> <image>image1.jpg</image> <image>image2.jpg</image> <image>image3.jpg</image> </images> </album>
View source is enabled in the following example.