【转】Flex中利用SimpleXMLEncoder将对象(objects)转化为XML

下面的例子展示了如何利用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>

原文地址:https://www.cnblogs.com/CoderWayne/p/1777906.html