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. JSON - Qt 对 JSON的处理

    1.关于JSON的介绍参考www.json.org Qt提供处理JSON数据的支持.QJSonObject类用于封装JSON object:QJsonDocument类提供读写JSON文档的方法:QJ ...

  2. JAVA设计模式:模板设计模式

    1.模板设计模式,是为了体现继承的作用.它主要的作用就是在类中定义一些公共的方法和标准,而其具体的实现则叫给其子类来根据子类具体的行为来实现:因为模板设计模式中必经还有一些自己的方法不是抽象的方法,只 ...

  3. android学习1——LinearLayout

    用linearLayout,上面放4个按钮,不作任何设置.xml文件内容如下: <?xml version="1.0" encoding="utf-8"? ...

  4. 【Unity优化】我所理解的IL指令

    版权声明:本文为博主原创文章,欢迎转载.请保留博主链接:http://blog.csdn.net/andrewfan 指令格式 英文单词全写 指令解释 nop no operation perform ...

  5. TP框架 基础1

    php框架 一.真实项目开发步骤: 多人同时开发项目,协作开发项目.分工合理.效率有提高(代码风格不一样.分工不好) 测试阶段 上线运行 对项目进行维护.修改.升级(单个人维护项目,十分困难,代码风格 ...

  6. 2017-03-10 T-sql 语句 高级查询

    T-SQL语句: 创建数据库: 1,点击新建查询,在弹出的页面上进行代码编写.点击可用数据库,编写前确定当前操作的页面是自己想要进行操作的界面. 2,数据库创建语句 Create datebase   ...

  7. Linux部署与基本指令

    把以前写的linux发布一下下吧,写的真的好差劲... Linux部署   chmod:改变一个文件的权限 改变abc的权限为777 常用的权限: 777-644-755 ************** ...

  8. Java中的枚举的治理

    版权声明:本文为博主原创文章,转载请注明出处,欢迎使劲喷 一.为啥用枚举&为啥要对枚举进行治理 1.先来说说为啥用枚举 表中某个字段标识了这条记录的状态,我们往往使用一些code值来标识,例如 ...

  9. php与mysql的常规使用

    <?php header("Content-type:text/html;charset=GBK"); /* 通常,php网页中完成有关数据库的操作,首先,需要如下代码: $ ...

  10. 关于label和span设置width无效问题解决方法

    转:http://www.jb51.net/web/113507.html 大家可能不知道默认情况下label.span 设置width 是无效的,只有当display:block时,我们所设置的wi ...