<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical"> <mx:Text width="400"> <mx:text> <![CDATA[XML Reader v0.1 Enter the url of any Flash accessable xml source. The tree below will represent the structure of the returned XML. ]]> </mx:text> </mx:Text> <mx:HTTPService resultFormat="e4x" id="xmlLoader"/> <mx:HBox width="400"> <mx:TextInput width="300" id="txt"/> <mx:Button label="Load XML" id="bttn" click="onClick()"/> </mx:HBox> <mx:Tree width="400" height="600" dataProvider="{xmlLoader.lastResult}" showRoot="true" labelFunction="getLabel" iconFunction="getIcon"/> <mx:Script> <![CDATA[ import mx.messaging.management.Attribute; import mx.rpc.events.ResultEvent; [Bindable] private var loadedXML:XML; [Embed(source="/assets/action_forward.gif")] private var att_icon:Class; [Embed(source="/assets/page_code.gif")] private var node_icon:Class; private function onClick():void{ xmlLoader.url = txt.text; xmlLoader.send(); xmlLoader.addEventListener(ResultEvent.RESULT, onComplete); } private function onComplete(e:Event):void{ var x:XML= xmlLoader.lastResult as XML; addAttributes(x); loadedXML=x; } private function addAttributes(x:XML):void{ var allChildren:XMLList = x.children(); for(var i:Number=0; i<allChildren.length();i++){ var c:XML = XML(allChildren[i]); var atts:XMLList = c.attributes(); if(atts.length()>1){ var ax:XML = <__attributes></__attributes>; for(var j:Number=0;j<atts.length(); j++){ ax.appendChild(XML("<"+atts[j].name()+">"+atts[j].toString()+"</"+atts[j].name()+">")); } c.appendChild(ax); } addAttributes(c); } } private function getLabel(o:Object):*{ var name:String = o.name(); if(name){ return name; } return o; } private function getIcon(item:Object):Class{ var x:XML = item as XML; if(x && x.parent()){ if(x.parent().name()=="__attributes"){ return att_icon; } } if(x.children().length()==0){ return null; } return node_icon; } ]]> </mx:Script> </mx:Application>