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. 浅谈Activiti Modeler 的扩展

    为什么要扩展         最近项目打算用activiti工作流中activiti modeler来做模块的可视化订阅,但是原生的activiti任务节点,有一些不符合业务需要,比如 配置项多,属性 ...

  2. 访问内网中的sql server数据库的简便方法

    前言: 有时候我们要访问局域网内的 sql server服务器,比如测试环境数据库在公司内网,回到家或在客户现场要连接内网中的数据库 第一步:假如可以连接局域网的数据库 192.168.150.129 ...

  3. struts2接收参数的5种方法

    以下形式中最常用的是前两种 1. 使用Action的属性: 在action 里面定义要接收的参数,并提供相应的setter,getter,和提交参数的名称一致, 并不用做数据类型的转换相应提交方式可以 ...

  4. 2-23c#基础循环语句

    循环语句 必须具备四要素:初始条件.循环条件.循环体.状态改变 for (初始条件; 循环条件; 状态改变)    {  循环体} 简单举例 for(int i=1;i<=10;i++)//就是 ...

  5. 深入理解ajax系列第四篇——请求实例

    前面的话 在使用ajax的过程中,常用的请求方式是GET和POST两种.本文将以实例的形式来详细说明这两种请求方式 GET GET是最常见的请求类型,最常用于向服务器查询某些信息.必要时,可以将查询字 ...

  6. smarty模板基础3 *缓存数据*

    缓存数据,这个并不是暂存的缓存,而是写入了内存的缓存 通过一个例子来书写:缓存数据 一.书写php和html页面的基本功能 既然是用smarty模板,那么前端和后端要分开写了 (1)php页面 < ...

  7. alisql安装步骤

    卸载原有自带的Mysql yum remove mysql-libs   安装依赖包 yum install centos-release-scl devtoolset-4-gcc-c++ devto ...

  8. 出现http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException异常

    解决方案 1.在eclipse的菜单中,进入Window > Preferences > Java > Installed JREs > Execution Environme ...

  9. WeMall的Android app商城中的wemall doraemon代码

    WeMall-Android 包含SMSSDK/WeMall-Client/social_sdk_library_project三个项目以及Api目录下的client.php/update.xml接口 ...

  10. PHP数据访问批量删除(10261101)

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...