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 相关文章推荐
JS应用之禁止抓屏、复制、打印
Feb 21 Javascript
JavaScript 验证码的实例代码(附效果图)
Mar 22 Javascript
JS控制图片翻转示例代码(兼容firefox,ie,chrome)
Dec 19 Javascript
jQuery$命名冲突怎么办如何解决
Jan 16 Javascript
使用jQuery和PHP实现类似360功能开关效果
Feb 12 Javascript
用原生JS对AJAX做简单封装的实例代码
Jul 13 Javascript
让DIV的滚动条自动滚动到最底部的3种方法(推荐)
Sep 24 Javascript
Ajax和Comet技术总结
Feb 19 Javascript
十分钟带你快速了解React16新特性
Nov 10 Javascript
jsonp实现百度下拉框功能的方法分析
May 10 Javascript
vue中使用WX-JSSDK的两种方法(推荐)
Jan 18 Javascript
如何使用JS console.log()技巧提高工作效率
Oct 14 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
php和mysql中uft-8中文编码乱码的几种解决办法
2012/04/19 PHP
php缩小png图片不损失透明色的解决方法
2013/12/25 PHP
php从数据库查询结果生成树形列表的方法
2015/04/17 PHP
Laravel6.2中用于用户登录的新密码确认流程详解
2019/10/16 PHP
document.all还是document.getElementsByName?
2006/07/21 Javascript
JQuery Easyui Tree的oncheck事件实现代码
2010/05/28 Javascript
toggle一个div显示或隐藏且可扩展成自定义下拉框
2013/09/12 Javascript
form表单action提交的js部分与html部分
2014/01/07 Javascript
简述Jquery与DOM对象
2015/07/10 Javascript
JS实现浏览器打印、打印预览示例
2017/02/28 Javascript
javascript实现数字配对游戏的实例讲解
2017/12/14 Javascript
微信小程序实现传参数的几种方法示例
2018/01/10 Javascript
解决bootstrap中下拉菜单点击后不关闭的问题
2018/08/10 Javascript
vue删除html内容的标签样式实例
2018/09/13 Javascript
angularJs复选框checkbox选中进行ng-show显示隐藏的方法
2018/10/08 Javascript
基于vue-cli搭建多模块且各模块独立打包的项目
2019/06/12 Javascript
javascript获取select值的方法完整实例
2019/06/20 Javascript
举例详解Python中yield生成器的用法
2015/08/05 Python
Python3.5.3下配置opencv3.2.0的操作方法
2018/04/02 Python
Python3爬虫学习之将爬取的信息保存到本地的方法详解
2018/12/12 Python
基于python-opencv3的图像显示和保存操作
2019/06/27 Python
python Django里CSRF 对应策略详解
2019/08/05 Python
python检查目录文件权限并修改目录文件权限的操作
2020/03/11 Python
python3.7调试的实例方法
2020/07/21 Python
Python尾递归优化实现代码及原理详解
2020/10/09 Python
巴黎卡诗美国官方网站:始于1964年的头发头皮护理专家
2017/07/10 全球购物
松本清官方海外旗舰店:日本最大的药妆连锁店
2017/11/21 全球购物
澳大利亚最早和最古老的巨型游戏专家:Yardgames
2020/02/20 全球购物
入党推优材料
2014/06/02 职场文书
市场部岗位职责范本
2015/04/15 职场文书
加薪通知
2015/04/25 职场文书
大学生志愿者心得体会
2016/01/15 职场文书
餐饮行业关注的9大营销策略
2019/08/26 职场文书
postgresql使用filter进行多维度聚合的解决方法
2021/07/16 PostgreSQL
MySQL令人大跌眼镜的隐式转换
2021/08/23 MySQL
MySQL中rank() over、dense_rank() over、row_number() over用法介绍
2022/03/23 MySQL