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

本文介绍了一个使用Flex框架中的SimpleXMLDecoder类将XML数据转换为ActionScript对象的示例。通过具体代码展示了如何从HTTPService接收XML数据并解析为AS对象,以便于进一步的数据处理。
这个例子演示使用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>

结果:

width="100%" height="250" src="http://blog.flexexamples.com/wp-content/uploads/SimpleXMLDecoder_decodeXML_test/bin/main.html">

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值