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. 前端开发面试题总结之——JAVASCRIPT(一)

    ___________________________________________________________________________________ 相关知识点 数据类型.运算.对象 ...

  2. Webpack学习系列(一)

    一:全局安装: npm install webpack -g (-g全局安装) npm init -y   (初始化参数) npm install webpack --save-dev  (安装在当前 ...

  3. 从CMOS到触发器(一)

    作为一个学微电子专业的IC learner,这个学期也有一门课:<微电子器件>,今天我就来聊聊基本的器件:CMOS器件及其电路.在后面会聊聊锁存器和触发器. 今天的主要内容如下所示: ·M ...

  4. 对spring,struts,hibernate及MVC的理解

    对于spring,hibernate,struts等框架,刚开始的时候总是会很迷茫,不知道他们是用来做什么的. 1.对框架的作用理解 个人认为框架的作用是把代码进行了分类,减少了代码的耦合性. 如果不 ...

  5. Androidstudio项目分享到Git@OSC托管

    Androidstudio项目分享到Git@OSC托管. 一.在OSC创建仓库 例如,创建一个AndroidStudy仓库,创建步骤如下: 输入仓库名称 点击创建按钮,就可以完成仓库的创建,如下图所示 ...

  6. 数据库笔试面试题库(Oracle、MySQL等)

    数据库笔试面试题库(Oracle.MySQL等) 版权声明:版权所有,欢迎分享本文,转载请保留出处,否则追究法律责任,谢谢合作. 注:本文将持续更新,可关注作者微信公众号以便获得最新笔试面试资料. ⊙ ...

  7. ERP实施顾问是干什么的?

    ERP实施序列的人员,统称为ERP实施顾问. ERP实施顾问“是把公司的ERP实施作为己任,并投入大量的人力和财力以实现这一目标的群体”.他们精通ERP理论与ERP软件的使用方法,熟练运用项目实施方法 ...

  8. 定制Maven的ArcheType

    根据需要定制Maven的ArcheType的好处不言而喻了,我就不再啰嗦.定制一般通过从Maven的项目构建,比手动构建省去了配置文件的编写.资源文件的复制等繁琐的操作,下面我们就说下从Maven项目 ...

  9. 【JS】JavaScript中的闭包

    在JavaScript中,闭包指的是有权访问另一个函数作用域中的变量的函数:创建闭包最常见的方式就是在一个函数内创建另一个函数.如下例子: function A(propertyName){ retu ...

  10. ST Lab1 junit test

    代码地址:  https://github.com/newff/st-lab1 Tasks: Install Junit(4.12), Hamcrest(1.3) with Eclipse Insta ...