JavaScript将XML转成JSON的方法


Posted in Javascript onMarch 12, 2015

本文实例讲述了JavaScript将XML转成JSON的方法。分享给大家供大家参考。具体方法如下:

1. JavaScript代码如下:

// Changes XML to JSON

function xmlToJson(xml) {

    // Create the return object

    var obj = {};

    if (xml.nodeType == 1) { // element

        // do attributes

        if (xml.attributes.length > 0) {

        obj["@attributes"] = {};

            for (var j = 0; j < xml.attributes.length; j++) {

                var attribute = xml.attributes.item(j);

                obj["@attributes"][attribute.nodeName] = attribute.nodeValue;

            }

        }

    } else if (xml.nodeType == 3) { // text

        obj = xml.nodeValue;

    }

    // do children

    if (xml.hasChildNodes()) {

        for(var i = 0; i < xml.childNodes.length; i++) {

            var item = xml.childNodes.item(i);

            var nodeName = item.nodeName;

            if (typeof(obj[nodeName]) == "undefined") {

                obj[nodeName] = xmlToJson(item);

            } else {

                if (typeof(obj[nodeName].length) == "undefined") {

                    var old = obj[nodeName];

                    obj[nodeName] = [];

                    obj[nodeName].push(old);

                }

                obj[nodeName].push(xmlToJson(item));

            }

        }

    }

    return obj;

};

2. XML代码:
<ALEXA VER="0.9" URL="davidwalsh.name/" HOME="0" AID="=">

    <SD TITLE="A" FLAGS="" HOST="davidwalsh.name">

        <TITLE TEXT="David Walsh Blog :: PHP, MySQL, CSS, Javascript, MooTools, and Everything Else"/>

        <LINKSIN NUM="1102"/>

        <SPEED TEXT="1421" PCT="51"/>

    </SD>

    <SD>

        <POPULARITY URL="davidwalsh.name/" TEXT="7131"/>

        <REACH RANK="5952"/>

        <RANK DELTA="-1648"/>

    </SD>

</ALEXA>

3. JSON结果:
{

  "@attributes": {

    AID: "=",

    HOME:  0,

    URL: "davidwalsh.name/",

    VER: "0.9",

  },

  SD = [

    {

      "@attributes": {

        FLAGS: "",

        HOST: "davidwalsh.name",

        TITLE: A

      },

      LINKSIN: {

        "@attributes": {

          NUM: 1102

        }

      },

      SPEED: {

        "@attributes": {

          PCT: 51,

          TEXT: 1421

        }

      },

      TITLE: {

        "@attributes": {

          TEXT: "David Walsh Blog :: PHP, MySQL, CSS, Javascript, MooTools, and Everything Else",

        }

      },

    },

    {

      POPULARITY: {

        "@attributes": {

          TEXT: 7131,

          URL: "davidwalsh.name/"

        }

      },

      RANK: {

        "@attributes": {

          DELTA: "-1648"

        }

      },

      REACH: {

        "@attributes": {

          RANK = 5952

        }

      }

    }

  ]

}

关于js操作xml感兴趣的朋友还可参考在线工具:

在线XML/JSON互相转换工具

在线XML格式化/压缩工具

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
IE6,IE7,IE8下使用Javascript记录光标选中范围(已补全)
Aug 28 Javascript
通过jQuery源码学习javascript(二)
Dec 27 Javascript
Jquery实现视频播放页面的关灯开灯效果
May 27 Javascript
查找iframe里元素的方法可传参
Sep 11 Javascript
jQuery中ajax的使用与缓存问题的解决方法
Dec 19 Javascript
JS修改地址栏参数实例代码
Jun 14 Javascript
js HTML5多图片上传及预览实例解析(不含前端的文件分割)
Aug 26 Javascript
详解JavaScript 中getElementsByName在IE中的注意事项
Feb 21 Javascript
react.js组件实现拖拽复制和可排序的示例代码
Aug 20 Javascript
微信小程序云开发如何使用npm安装依赖
May 18 Javascript
Vue最新防抖方案(必看篇)
Oct 30 Javascript
Vue如何基于vue-i18n实现多国语言兼容
Jul 17 Javascript
JavaScript中诡异的delete操作符
Mar 12 #Javascript
JavaScript实现计算字符串中出现次数最多的字符和出现的次数
Mar 12 #Javascript
jquery实现页面关键词高亮显示的方法
Mar 12 #Javascript
JavaScript设计模式学习之“类式继承”
Mar 12 #Javascript
鼠标事件的screenY,pageY,clientY,layerY,offsetY属性详解
Mar 12 #Javascript
JavaScript中return false的用法
Mar 12 #Javascript
JavaScript中神奇的call()方法
Mar 12 #Javascript
You might like
利用中国天气预报接口实现简单天气预报
2014/01/20 PHP
PHP中开启gzip压缩的2种方法
2015/01/31 PHP
无需数据库在线投票调查php代码
2016/07/20 PHP
Javascript实例教程(19) 使用HoTMetal(2)
2006/12/23 Javascript
Javascript对象属性方法汇总
2013/11/21 Javascript
详解JavaScript ES6中的Generator
2015/07/28 Javascript
javascript 判断两个日期之差的示例代码
2015/09/05 Javascript
js滑动提示效果代码分享
2016/03/10 Javascript
JavaScript必知必会(十) call apply bind的用法说明
2016/06/08 Javascript
详解Vue2.x-directive的学习笔记
2017/07/17 Javascript
Javascript中将变量转换为字符串的三种方法
2017/09/19 Javascript
Angular表格神器ui-grid应用详解
2017/09/29 Javascript
Vue监听一个数组id是否与另一个数组id相同的方法
2018/09/26 Javascript
vue实现动态按钮功能
2019/05/13 Javascript
Vue组件跨层级获取组件操作
2020/07/27 Javascript
Python DataFrame.groupby()聚合函数,分组级运算
2018/09/18 Python
Pandas实现dataframe和np.array的相互转换
2019/11/30 Python
pycharm如何实现跨目录调用文件
2020/02/28 Python
python微信公众号开发简单流程实现
2020/03/09 Python
CSS3制作翻转效果_动力节点Java学院整理
2017/07/11 HTML / CSS
英文翻译的自我评价语句
2013/10/04 职场文书
仓库管理专业个人自我评价范文
2013/11/11 职场文书
旅游管理专业个人求职信范文
2013/12/24 职场文书
安全保证书范文
2014/04/29 职场文书
社会调查研究计划书
2014/05/01 职场文书
详细的本科生职业生涯规划范文
2014/09/16 职场文书
2014年人大工作总结
2014/12/10 职场文书
担保贷款承诺书
2015/04/30 职场文书
放牛班的春天观后感
2015/06/01 职场文书
导游带团欢迎词
2015/09/30 职场文书
中国现代文学之经典散文三篇
2019/09/18 职场文书
Python 居然可以在 Excel 中画画你知道吗
2022/02/15 Python
面试中老生常谈的MySQL问答集锦夯实基础
2022/03/13 MySQL
Python matplotlib绘制雷达图
2022/04/13 Python
PostgreSQL基于pgrouting的路径规划处理方法
2022/04/18 PostgreSQL
Redis 报错 error:NOAUTH Authentication required
2022/05/15 Redis