下面的例子展示了如何利用Flex的SimpleXMLEncoder类和
encodeValue()
事件将一组对象(objects)转为XML对象。
下面是具体的例子以及源代码:
<?xml version="1.0" encoding="utf-8"?>
<!-- http://blog.flexexamples.com/2008/03/04/converting-objects-to-xml-packets-using-the-simplexmlencoder-class-in-flex/ -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="vertical"
verticalAlign="middle"
backgroundColor="white"
creationComplete="init();">
<mx:ArrayCollection id="arrColl">
<mx:source>
<mx:Array>
<mx:Object c1="1.A" c2="1.B" />
<mx:Object c1="2.A" c2="2.B" />
<mx:Object c1="3.A" c2="3.B" />
<mx:Object c1="4.A" c2="4.B" />
<mx:Object c1="5.A" c2="5.B" />
<mx:Object c1="6.A" c2="6.B" />
</mx:Array>
</mx:source>
</mx:ArrayCollection>
<mx:Script>
<![CDATA[
import mx.rpc.xml.SimpleXMLEncoder;
import mx.utils.ObjectUtil;
private function init():void {
var xml:XML = objectToXML(arrColl.source);
textArea1.text = ObjectUtil.toString(arrColl.source);
textArea2.text = xml.toXMLString();
}
private function objectToXML(obj:Object):XML {
var qName:QName = new QName("root");
var xmlDocument:XMLDocument = new XMLDocument();
var simpleXMLEncoder:SimpleXMLEncoder = new SimpleXMLEncoder(xmlDocument);
var xmlNode:XMLNode = simpleXMLEncoder.encodeValue(obj, qName, xmlDocument);
var xml:XML = new XML(xmlDocument.toString());
// trace(xml.toXMLString());
return xml;
}
]]>
</mx:Script>
<mx:HDividedBox width="100%" height="100%">
<mx:TextArea id="textArea1"
editable="false"
width="100%"
height="100%" />
<mx:TextArea id="textArea2"
editable="false"
width="100%"
height="100%" />
</mx:HDividedBox>
</mx:Application>