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

【Flex】读取本地JSON,然后JSON数据转成XML数据的更多相关文章

  1. 如何使用Google APIs和Google应用系统集成(7)----在里面JSON兑换XML数据处理,JSON数据包括违规XML数据规范:XML节点名称不支持号码Java解

    笔者电话Google Calendar APIs的GetColors方法,其中(有关详细信息Google Calendar API已经Google API看到我的博文介绍的其余部分,目前,我们只取Go ...

  2. Ajax--解析JSON数据与解析XML数据

    一.Ajax解析JSON数据 nav.json(json数据) [ { "link":"http://www.jd.com", "src": ...

  3. json数据相对于xml数据.

    JSON is a valid subset of JavaScript, Python, and YAML JSON parsing is generally faster than XML par ...

  4. js把树形数据转成扁平数据

    我就直接上代码了都是实际项目里面用到的 1.假设这个json就已经是树型结构数据了(如果不知道怎么实现树型结构数据请看我另一篇博客) var compressedArr=afcommon.treeDa ...

  5. 微软BI 之SSIS 系列 - 两种将 SQL Server 数据库数据输出成 XML 文件的方法

    开篇介绍 在 SSIS 中并没有直接提供从数据源到 XML 的转换输出,Destination 的输出对象有 Excel File, Flat File, Database 等,但是并没有直接提供 X ...

  6. js把json数据转化成树形数据

    /*转化函数*/ function(data, attributes) { let resData = data; let tree = []; for(let i = 0; i < resDa ...

  7. 把DataTable中的数据拼接成XML时遇到的问题

    错误信息:System.Web.Services.Protocols.SoapException: System.Web.Services.Protocols.SoapException: Serve ...

  8. 数据库数据导出成XML文件

    在数据库中,怎样把库中的数据导出XML文件, sql语句如下: SELECT *  FROM 表名 FOR XML AUTO, ELEMENTS

  9. Oracle查询多行数据合并成一行数据

    例如: select base_id, translate (ltrim (text1, '/'), '*/', '*,') xmmc,translate (ltrim (text2, '/'), ' ...

随机推荐

  1. Unity渲染优化中文翻译(三)——GPU的优化策略

    如果游戏的渲染瓶颈来自于GPU 首要任务就是找出造成GPU瓶颈的因素所在,通常GPU的性能受到像素分辨率的影响,特别是在移动客户端的游戏,但是内存带宽和顶点计算的影响也需要注意.这些因素的影响都需要实 ...

  2. POJ 2989 All Friends 极大团计数

    POJ 2989 题意:给定一个无向图(节点数小于128)求极大团(不包含在更大的团中)的总数. 对最大团,极大团不熟悉的,建议先阅读最大团搜索问题 ZOJ 1492 再来看本题. 本题数据有限,可以 ...

  3. 每天一个Linux命令(05)--rm命令

    自从学会了用mkdir创建目录之后,整个系统里就只能看到一堆空目录了,囧~ 那么今天我们来学一下如何清理这些空目录吧--rm命令,该命令的功能为删除一个目录中的一个或多个文件或目录,它也可以将某个目录 ...

  4. js本地预览图片

    废话不说  直接上代码 <script type="text/javascript" src="http://code.jquery.com/jquery-late ...

  5. 关于java socket

    1. 关于new Socket()中参数的理解 Server端: 调用ServerSocket serverSocket = new ServerSocket(1287,2);后Server端打开了指 ...

  6. Java程序员入门:Java程序员面试失败的5大原因

    1 说得太少 尤其是那些开放式的问题,如"请介绍下你自己"或"请讲一下你曾经解决过的复杂问题".面试官会通过你对这些技术和非技术问题的回答来评估你的激情.他们也 ...

  7. 提交Sublime Text 插件到Package Control

    最近写了一个lua智能提示的插件LuaSmartTips.这个插件一直都是自己一个人在用,昨天突然想把插件提交到Package Control,如果其他的人有这样的需求就可以直接安装. Package ...

  8. 20ms Ac Code

    Rectangle Aread C Code #include <stdio.h> int computeArea(int A,int B,int C,int D,int E,int F, ...

  9. Struts2学习笔记⑥

    在微信读书上在看一本李刚写的Struts 2.X权威指南 (好像叫这个)的书,可以看得出来作者的开发经验还是很充足的,但是觉得他的尺度和顺序没有把握好,他自己说拦截器是数据校验.国际化的基础-完了还把 ...

  10. nodejs的简单爬虫

    闲聊       好久没写博客了,前几天小颖在朋友的博客里看到了用nodejs的简单爬虫.所以小颖就自己试着做了个爬博客园数据的demo.嘻嘻......      小颖最近养了条泰日天,自从养了我家 ...