Flex中Object, String, XML, ArrayCollection互转

 

import mx.collections.ArrayCollection;

import mx.rpc.xml.SimpleXMLEncoder;

import mx.rpc.xml.SimpleXMLDecoder;

import mx.utils.ObjectUtil;

  private function xmlToArrayCollection(xml:XML):ArrayCollection{                 

            var xmlDoc:XMLDocument = new XMLDocument(xml.toString());

           var decoder:SimpleXMLDecoder = new SimpleXMLDecoder(true);

            var resultObj:Object = decoder.decodeXML(xmlDoc);

            var ac:ArrayCollection =new ArrayCollection(Array(resultObj.root.list.source.item));

            return ac;

}

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());

            return xml;

}

private function objectToArrayCollection(obj:Object):ArrayCollection {

            var ac:ArrayCollection =  new ArrayCollection(obj as Array);

            return ac;

}

private function arrayCollectionToXML(ac:ArrayCollection):XML{

var xml:XML = objectToXML(ac);

return xml;

}

private function init():void{

  var arr:Array = new Array();

  arr.push({data:0,name:’deva’});

  arr.push({data:1,name:’raj’});

  var ac:ArrayCollection = new ArrayCollection(arr);

  var xml:XML = arrayCollectionToXML(ac);

var newAc:ArrayCollection = xmlToArrayCollection(xml);

trace(newAc[0][0].name);

}

private function objToStr(value:Object,indent:int =0,

                                         refs:Dictionary= null,

                                         namespaceURIs:Array = null,

                                         exclude:Array = null):String{

var str:String;

var refCount:int = 0;

if (value is Date)

            {

                return value.toString();

            }

            else if (value is XMLNode)

            {

                return value.toString();

            }

            else if (value is Class)

            {

                return “(” + getQualifiedClassName(value) + “)”;

            }

            else

            {

                var classInfo:Object = ObjectUtil.getClassInfo(value, exclude,

                    { includeReadOnly: true, uris: namespaceURIs });

                var properties:Array = classInfo.properties;

                str = “(” + classInfo.name + “)”;

                if (refs == null)

                    refs = new Dictionary(true);

                var id:Object = refs[value];

                if (id != null)

                {

                    str += “#” + int(id);

                    return str;

                }

                if (value != null)

                {

                    str += “#” + refCount.toString();

                    refs[value] = refCount;

                    refCount++;

                }

                var isArray:Boolean = value is Array;

                var isDict:Boolean = value is Dictionary;

                var prop:*;

                indent += 2;

                for (var j:int = 0; j < properties.length; j++)

                {

                    str = newline(str, indent);

                    prop = properties[j];

                    if (isArray)

                        str += “[";

                    else if (isDict)

                        str += "{";

                    if (isDict)

                    {

                        str += objToStr(prop, indent, refs,

                                                namespaceURIs, exclude);

                    }

                    else

                    {

                        str += prop.toString();

                    }

                    if (isArray)

                        str += "] “;

                    else if (isDict)

                        str += “} = “;

                    else

                        str += ” = “;

                    try

                    {

                        str += objToStr(value[prop], indent, refs,

                                                namespaceURIs, exclude);

                    }

                    catch(e:Error)

                    {

                        str += “?”;

                    }

                }

                indent -= 2;

                return str;

            }

}

private static function newline(str:String, n:int = 0):String

   {

       var result:String = str;

       result += “\n”;

       for (var i:int = 0; i < n; i++)

       {

           result += ” “;

       }

       return result;

   }

/* General function for Conversion (thanks, Krystian Bień)

 public function xmlToArrayCollection(xml:XML):ArrayCollection{

            var temp:String = ‘<items>’ + xml.toString() + ‘</items>’;

            xml = XML(temp);

            var xmlDoc:XMLDocument = new XMLDocument(xml.toString());

            var decoder:SimpleXMLDecoder = new SimpleXMLDecoder(true);

            var resultObj:Object = decoder.decodeXML(xmlDoc);

            var ac:ArrayCollection;

            ac = new ArrayCollection();

            ac.addItem(resultObj.items);

            return ac;               

        }*/

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值