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 相关文章推荐
IE浏览器PNG图片透明效果代码
Sep 02 Javascript
9个JavaScript评级/投票插件
Jan 18 Javascript
JQuery 将元素显示在屏幕的中央的代码
Feb 27 Javascript
RequireJS多页面应用实例分析
Jun 29 Javascript
Angularjs手动解析表达式($parse)
Oct 12 Javascript
浅谈js之字面量、对象字面量的访问、关键字in的用法
Nov 20 Javascript
jQuery插件FusionCharts实现的MSBar3D图效果示例【附demo源码】
Mar 23 jQuery
vue自定义一个v-model的实现代码
Jun 21 Javascript
Vue2.0 v-for filter列表过滤功能的实现
Sep 07 Javascript
默认浏览器设置及vue自动打开页面的方法
Sep 21 Javascript
利用vue-i18n实现多语言切换效果的方法
Jun 19 Javascript
vue使用lodop打印控件实现浏览器兼容打印的方法
Feb 07 Vue.js
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
php读取二进制流(C语言结构体struct数据文件)的深入解析
2013/06/13 PHP
配置php网页显示各种语法错误
2013/09/23 PHP
phpmailer在服务器上不能正常发送邮件的解决办法
2014/07/08 PHP
PHP Streams(流)详细介绍及使用
2015/05/12 PHP
浅谈PHP的数据库接口和技术
2016/12/09 PHP
PHP实现根据数组某个键值大小进行排序的方法
2018/03/13 PHP
Yii框架getter与setter方法功能与用法分析
2019/10/22 PHP
Laravel Eloquent分表方法并使用模型关联的实现
2019/11/25 PHP
记录几个javascript有关的小细节
2007/04/02 Javascript
两个select之间option的互相添加操作(jquery实现)
2009/11/12 Javascript
jQuery 页面 Mask实现代码
2010/01/09 Javascript
js中reverse函数的用法详解
2013/12/26 Javascript
jQuery制作简洁的图片轮播效果
2015/04/03 Javascript
探析浏览器执行JavaScript脚本加载与代码执行顺序
2016/01/12 Javascript
JavaScript常用本地对象小结
2016/03/28 Javascript
图文详解Heap Sort堆排序算法及JavaScript的代码实现
2016/05/04 Javascript
jQuery中Nicescroll滚动条插件的用法
2016/11/10 Javascript
Bootstrap源码解读排版(1)
2016/12/23 Javascript
bootstrap css样式之表单
2017/01/19 Javascript
js实现下拉框效果(select)
2017/03/28 Javascript
JavaScript实现修改伪类样式
2017/11/27 Javascript
详解关于Vue2.0路由开启keep-alive时需要注意的地方
2018/09/18 Javascript
详解处理Vue单页面应用SEO的另一种思路
2018/11/09 Javascript
[03:07]2015国际邀请赛选手档案EHOME.rOtK 是什么让他落泪?
2015/07/31 DOTA
Python中zip()函数用法实例教程
2014/07/31 Python
Python实现LRU算法的2种方法
2015/06/24 Python
python编程线性回归代码示例
2017/12/07 Python
Python之两种模式的生产者消费者模型详解
2018/10/26 Python
pytorch 固定部分参数训练的方法
2019/08/17 Python
python列表推导和生成器表达式知识点总结
2020/01/10 Python
Cpython解释器中的GIL全局解释器锁
2020/11/09 Python
html5的pushstate以及监听浏览器返回事件的实现
2020/08/11 HTML / CSS
自我鉴定 电子商务专业
2014/01/30 职场文书
2015年五一劳动节活动总结
2015/02/09 职场文书
销售开票员岗位职责
2015/04/15 职场文书
《宝可梦》动画制作25周年到来 官方发布特别纪念视频
2022/04/01 日漫