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 相关文章推荐
onpropertypchange
Jul 01 Javascript
Json序列化和反序列化方法解析
Dec 19 Javascript
JS实现清除指定cookies的方法
Sep 20 Javascript
使用node.js 制作网站前台后台
Nov 13 Javascript
超棒的响应式布局jQuery插件Freetile.js
Nov 17 Javascript
webuploader模态框ueditor显示问题解决方法
Dec 27 Javascript
关于redux-saga中take使用方法详解
Feb 27 Javascript
vue .sync修饰符的使用详解
Jun 15 Javascript
关于微信小程序登录的那些事
Jan 08 Javascript
vue实现的微信机器人聊天功能案例【附源码下载】
Feb 18 Javascript
JavaScript多种滤镜算法实现代码实例
Dec 10 Javascript
Vue中computed及watch区别实例解析
Aug 01 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
Drupal7连接多个数据库及常见问题解决
2014/03/02 PHP
php数字每三位加逗号的功能函数
2015/10/22 PHP
PHP+MySQL实现消息队列的方法分析
2018/05/09 PHP
PHP校验15位和18位身份证号的类封装
2018/11/07 PHP
利用onresize使得div可以随着屏幕大小而自适应的代码
2010/01/15 Javascript
JQuery 插件制作实践 xMarquee插件V1.0
2010/04/02 Javascript
跨浏览器通用、可重用的选项卡tab切换js代码
2011/09/20 Javascript
JQuery操作表格(隔行着色,高亮显示,筛选数据)
2012/02/23 Javascript
THREE.JS入门教程(6)创建自己的全景图实现步骤
2013/01/25 Javascript
javascript中定义类的方法详解
2015/02/10 Javascript
JavaScript中的getDay()方法使用详解
2015/06/09 Javascript
javascript 数组的定义和数组的长度
2016/06/07 Javascript
Bootstrop实现多级下拉菜单功能
2016/11/24 Javascript
Vue axios 中提交表单数据(含上传文件)
2017/07/06 Javascript
Vue 列表上下过渡效果的实例代码
2019/06/25 Javascript
vue2 拖动排序 vuedraggable组件的实现
2019/08/08 Javascript
JS面向对象编程实现的拖拽功能案例详解
2020/03/03 Javascript
[06:16]第十四期-国士无双绝地翻盘之撼地神牛
2014/06/24 DOTA
python脚本设置超时机制系统时间的方法
2016/02/21 Python
python中的计时器timeit的使用方法
2017/10/20 Python
python实现图像识别功能
2018/01/29 Python
Python实现的拟合二元一次函数功能示例【基于scipy模块】
2018/05/15 Python
python中ASCII码字符与int之间的转换方法
2018/07/09 Python
matplotlib调整子图间距,调整整体空白的方法
2018/08/03 Python
python+selenium实现QQ邮箱自动发送功能
2019/01/23 Python
python+openCV利用摄像头实现人员活动检测
2019/06/22 Python
python读写配置文件操作示例
2019/07/03 Python
python爬虫可以爬什么
2020/06/16 Python
产品推广策划方案
2014/05/10 职场文书
工会工作先进事迹
2014/08/18 职场文书
学习十八大演讲稿
2014/09/15 职场文书
工作失职检讨书(精华篇)
2014/10/15 职场文书
党员学习新党章思想汇报
2014/10/25 职场文书
幼儿园老师个人总结
2015/02/28 职场文书
2015年政风行风工作总结
2015/04/21 职场文书
初任公务员培训心得体会
2016/01/08 职场文书