Flex中利用SimpleXMLDecoder类将XML转化为对象(objects)

和前面的 Flex中利用HTTPService MXML标签(tag)将XML转化为对象(objects)比较相似,下面的例子演示了如何利用SimpleXMLDecoder类中的 decodeXML()事件,将XMLDocument对象转化为ActionScript的对象。
下面是全部的代码:
Download: main.mxml
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!-- http://blog.flexexamples.com/2007/09/19/converting-xml-to-objects-using-the-flex-simplexmldecoder-class/ -->
  3. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" 
  4.         layout="vertical" 
  5.         verticalAlign="middle" 
  6.         backgroundColor="white" 
  7.         creationComplete="serv.send();">
  8.     <mx:Script>
  9.         <![CDATA[ 
  10.             import mx.rpc.events.FaultEvent;
  11.             import mx.rpc.events.ResultEvent;
  12.             import mx.rpc.xml.SimpleXMLDecoder;
  13.             private function serv_result(evt:ResultEvent):void { 
  14.                 /* Convert XMLNode to XMLDocument. */ 
  15.                 var xmlStr:String = evt.result.toString();
  16.                 var xmlDoc:XMLDocument = new XMLDocument(xmlStr);
  17.                 var decoder:SimpleXMLDecoder = new SimpleXMLDecoder(true);
  18.                 var resultObj:Object = decoder.decodeXML(xmlDoc);
  19.                 /* Assign the values... */ 
  20.                 nameText.text = resultObj.album.name;
  21.                 img0Text.text = resultObj.album.images.image[0];
  22.                 img1Text.text = resultObj.album.images.image[1];
  23.                 img2Text.text = resultObj.album.images.image[2];
  24.             } 
  25.             private function serv_fault(evt:FaultEvent):void { 
  26.                 // Show the error label.
  27.                 error.text += evt.fault.faultString;
  28.                 error.visible = true;
  29.                 // Hide the form.
  30.                 form.visible = false;
  31.             } 
  32.         ]]>
  33.     </mx:Script>
  34.     <mx:String id="XML_URL">album.xml</mx:String>
  35.     <mx:HTTPService id="serv" 
  36.             url="{XML_URL}" 
  37.             resultFormat="xml" 
  38.             result="serv_result(event);" 
  39.             fault="serv_fault(event);" />
  40.     <mx:ApplicationControlBar dock="true">
  41.         <mx:Label text="{XML_URL}" />
  42.     </mx:ApplicationControlBar>
  43.     <mx:Label id="error"
  44.             color="red"
  45.             fontSize="36"
  46.             fontWeight="bold"
  47.             visible="false"
  48.             includeInLayout="{error.visible}"/>
  49.     <mx:Form id="form" 
  50.             includeInLayout="{form.visible}">
  51.         <mx:FormItem label="resultObj.album.name:">
  52.             <mx:Label id="nameText" />
  53.         </mx:FormItem>
  54.         <mx:FormItem label="resultObj.album.images.image[0]:">
  55.             <mx:Label id="img0Text" />
  56.         </mx:FormItem>
  57.         <mx:FormItem label="resultObj.album.images.image[1]:">
  58.             <mx:Label id="img1Text" />
  59.         </mx:FormItem>
  60.         <mx:FormItem label="resultObj.album.images.image[2]:">
  61.             <mx:Label id="img2Text" />
  62.         </mx:FormItem>
  63.     </mx:Form>
  64. </mx:Application>
下面是XML文件内容:
Download: album.xml
  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <album> 
  3.     <name>One</name> 
  4.     <images> 
  5.         <image>image1.jpg</image> 
  6.         <image>image2.jpg</image> 
  7.         <image>image3.jpg</image> 
  8.     </images> 
  9. </album>
下面是执行实际效果:
 

你可能感兴趣的:(xml,Flex,职场,休闲)