使用flex SimpleXMLDecoder 类转换xml为object对象

这个例子演示使用SimpleXMLDecoder类的 decodeXML()转换XMLDocument对象为 ActionScript Object对象。

全代码:

<? 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文件:
<? 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 >

结果:

你可能感兴趣的:(xml,Flex,Blog,Adobe,actionscript)