【Flex】读取本地JSON,然后JSON数据转成XML数据

package utils
{
    import flash.xml.XMLDocument;
    import flash.xml.XMLNode;

    import mx.rpc.xml.SimpleXMLEncoder;

    /**
     * 模块功能:把json格式的数据 转换成 xml格式的数据
     * 创建时间:2016-11-26 下午3:33:20
     * @author pengxiang
     * 
     */ 
    public final class ConverJSONToXML
    {
        public function ConverJSONToXML()
        {

        }

        /**
         * 函数功能:把Object格式数据 转换成       XML格式数据;(方法1 可以用,完全灵活,但是对于本项目有BUG,作为下面优化的参考) 
         * @param obj   Object格式数据
         * @param rootNodeName  XML根节点名称
         * @return  XML
         * 
         */     
        public static function converObjectToXML1(obj:Object,rootNodeName:String):XML {
            var qName:QName = new QName(rootNodeName);
            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;
        }

        /**
         * 函数功能:把Object格式数据 转换成       XML格式数据;(方法2  不可以用,半灵活,有BUG,作为下面优化的参考) 
         * @param obj   Object格式数据
         * @param nodeParentName    XML根节点名称
         * @return  XML
         * 
         */     
        public static function converObjectToXML2(obj:Object,nodeParentName:String):XML
        {
            var nodeParent:XML = <{nodeParentName}/>;
            for(var item:Object in obj){
                var node:XML = new XML(<{item}></{item}>);
                if (item == "arr"){
                    var arr :Array = String(obj[item]).split(",");
                    for (var i:int=0;i<arr.length;i++){
                        node.appendChild(new XML(<{i}>{arr[i]}</{i}>));
                    }
                }else if (item == "Item"){
                    converObjectToXML2(obj[item], node);
                }else{
                    node = new XML(<{item}>{obj[item]}</{item}>);
                }
                nodeParent.appendChild(node);
            }

            trace(nodeParent.toXMLString());
            return nodeParent;
        }

        /**
         * 函数功能:把Object格式数据 转换成       XML格式数据;(方法3  可以用,半写死半灵活的方法,针对本项目设定的json格式,无BUG )
         * @param itemObj   Object格式数据
         * @param rootNodeName  XML根节点名称
         * @param itemNodeName  XML子节点名称
         * @return  XML
         * 
         */     
        public static function converObjectToXML(itemObj:Object,rootNodeName:String,itemNodeName:String):XML
        {
            //              var rootNode:XML = <root/>;
            //              for(var i:int=0;i<itemObj.length;i++)
            //              {
            //                  var obj:Object = itemObj[i];
            //                  var itemNode:XML = <Item/>;
            //                  for(var str:String in obj)
            //                  {
            //                      itemNode["@"+str] = obj[str];
            //                  }
            //                  rootNode.appendChild(itemNode);
            //              }

            var rootNode:XML = <{rootNodeName}/>;
            for(var i:String in itemObj)
            {
                var obj:Object = itemObj[i];
                var itemNode:XML = <{itemNodeName}/>;
                for(var str:String in obj)
                {
                    itemNode["@"+str] = obj[str];
                }
                rootNode.appendChild(itemNode);
            }

            return rootNode;    
        }

        public static function objectToXml(obj:Object, root:*):void
        {
            for(var str:String in obj)
            {
                root["@"+str] = obj[str];
            }
        }

        /**
         * 返回XML文件字符串 
         * @param value
         * @return 
         * 
         */    
        public static function toXMLFileString(value:XML):String
        {
            return '<?xml version="1.0" encoding="utf-8"?>\n' + value.toXMLString();
        }
    }
}

转载于:https://www.cnblogs.com/seanp/p/6522020.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值