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 相关文章推荐
jquery 插件 web2.0分格的分页脚本,可用于ajax无刷新分页
Dec 25 Javascript
锋利的jQuery 要点归纳(三) jQuery中的事件和动画(上:事件篇)
Mar 24 Javascript
cloudgamer出品ImageZoom 图片放大效果
Apr 01 Javascript
Jsonp post 跨域方案
Jul 06 Javascript
js实现图片放大和拖拽特效代码分享
Sep 05 Javascript
程序员必知35个jQuery 代码片段
Nov 05 Javascript
超详细的javascript数组方法汇总
Nov 21 Javascript
通过扫描二维码打开app的实现代码
Nov 10 Javascript
vue构建单页面应用实战
Apr 10 Javascript
浅谈AngularJS中使用$resource(已更新)
Sep 14 Javascript
原生JS实现$.param() 函数的方法
Aug 10 Javascript
关于vue状态过渡transition不起作用的原因解决
Apr 09 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
Ajax+PHP快速上手及简单应用说明
2013/07/24 PHP
7个鲜为人知却非常实用的PHP函数
2015/07/01 PHP
laravel中命名路由的使用方法
2017/02/24 PHP
PHP简单实现模拟登陆功能示例
2017/09/15 PHP
限制复选框的最大可选数
2006/07/01 Javascript
通过JAVAScript实现页面自适应
2007/01/19 Javascript
由JavaScript技术实现的web小游戏(不含网游)
2010/06/12 Javascript
javascript弹出窗口中增加确定取消按钮
2016/06/24 Javascript
JS无缝滚动效果实现方法分析
2016/12/21 Javascript
js生成随机数方法和实例
2017/01/17 Javascript
vue学习笔记之vue1.0和vue2.0的区别介绍
2017/05/17 Javascript
关于Ajax的原理以及代码封装详解
2017/09/08 Javascript
jQuery niceScroll滚动条错位问题的解决方法
2018/02/03 jQuery
jQuery+koa2实现简单的Ajax请求的示例
2018/03/06 jQuery
vue-cli扩展多模块打包的示例代码
2018/04/09 Javascript
微信小程序获取音频时长与实时获取播放进度问题
2018/08/28 Javascript
nodejs使用socket5进行代理请求的实现
2020/02/21 NodeJs
jQuery 动画与停止动画效果实例详解
2020/05/19 jQuery
Python警察与小偷的实现之一客户端与服务端通信实例
2014/10/09 Python
python批量制作雷达图的实现方法
2016/07/26 Python
Anaconda 离线安装 python 包的操作方法
2018/06/11 Python
利用python打开摄像头及颜色检测方法
2018/08/03 Python
使用Python-OpenCV向图片添加噪声的实现(高斯噪声、椒盐噪声)
2019/05/28 Python
python通过opencv实现图片裁剪原理解析
2020/01/19 Python
Python gevent协程切换实现详解
2020/09/14 Python
Python collections模块的使用方法
2020/10/09 Python
css3的@media属性实现页面响应式布局示例代码
2014/02/10 HTML / CSS
详解html5 postMessage解决跨域通信的问题
2018/08/17 HTML / CSS
《少年王冕》教学反思
2014/04/11 职场文书
物流专业求职信
2014/06/30 职场文书
教师职业道德事迹材料
2014/08/18 职场文书
食品安全演讲稿
2014/09/01 职场文书
会议主持人开场白台词
2015/05/28 职场文书
锦旗赠语
2015/06/23 职场文书
关于感恩的素材句子(38句)
2019/11/11 职场文书
Keras在mnist上的CNN实践,并且自定义loss函数曲线图操作
2021/05/25 Python