Mar 12

在前面的Flex中利用SimpleXMLDecoder类将XML转化为对象(objects),我们看到了如何利用SimpleXMLDecoder类和decodeXML()事件,将一个XML的instance转为一个对象的instance。

下面的例子展示了如何利用Flex的SimpleXMLEncoder类和encodeValue()事件将一组对象(objects)转为XML对象。

下面是具体的例子以及源代码:


Download: main.mxml
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!-- http://blog.flexexamples.com/2008/03/04/converting-objects-to-xml-packets-using-the-simplexmlencoder-class-in-flex/ -->
  3. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
  4.         layout="vertical"
  5.         verticalAlign="middle"
  6.         backgroundColor="white"
  7.         creationComplete="init();">
  8.  
  9.     <mx:ArrayCollection id="arrColl">
  10.         <mx:source>
  11.             <mx:Array>
  12.                 <mx:Object c1="1.A" c2="1.B" />
  13.                 <mx:Object c1="2.A" c2="2.B" />
  14.                 <mx:Object c1="3.A" c2="3.B" />
  15.                 <mx:Object c1="4.A" c2="4.B" />
  16.                 <mx:Object c1="5.A" c2="5.B" />
  17.                 <mx:Object c1="6.A" c2="6.B" />
  18.             </mx:Array>
  19.         </mx:source>
  20.     </mx:ArrayCollection>
  21.  
  22.     <mx:Script>
  23.         <![CDATA[
  24.             import mx.rpc.xml.SimpleXMLEncoder;
  25.             import mx.utils.ObjectUtil;
  26.  
  27.             private function init():void {
  28.                 var xml:XML = objectToXML(arrColl.source);
  29.                 textArea1.text = ObjectUtil.toString(arrColl.source);
  30.                 textArea2.text = xml.toXMLString();
  31.             }
  32.  
  33.             private function objectToXML(obj:Object):XML {
  34.                 var qName:QName = new QName("root");
  35.                 var xmlDocument:XMLDocument = new XMLDocument();
  36.                 var simpleXMLEncoder:SimpleXMLEncoder = new SimpleXMLEncoder(xmlDocument);
  37.                 var xmlNode:XMLNode = simpleXMLEncoder.encodeValue(obj, qName, xmlDocument);
  38.                 var xml:XML = new XML(xmlDocument.toString());
  39.                 // trace(xml.toXMLString());
  40.                 return xml;
  41.             }
  42.         ]]>
  43.     </mx:Script>
  44.  
  45.     <mx:HDividedBox width="100%" height="100%">
  46.         <mx:TextArea id="textArea1"
  47.                 editable="false"
  48.                 width="100%"
  49.                 height="100%" />
  50.         <mx:TextArea id="textArea2"
  51.                 editable="false"
  52.                 width="100%"
  53.                 height="100%" />
  54.     </mx:HDividedBox>
  55.  
  56. </mx:Application>
下面是执行实例(可以右键察看源代码):

原文作者:Peter deHaan 翻译:minidxer

written by Minidxer  |  tags: , , , , , , ,

Related Post

Leave a Reply