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 EasyUI API 中文文档 - Spinner微调器使用
Oct 21 Javascript
js实现的仿新浪微博完美的时间组件升级版
Dec 20 Javascript
javascript日期验证之输入日期大于等于当前日期
Dec 13 Javascript
深入学习jQuery Validate表单验证(二)
Jan 18 Javascript
jQuery实现按钮点击遮罩加载及处理完后恢复的效果
Jun 07 Javascript
js判断radiobuttonlist的选中值显示/隐藏其它模块的实现方法
Aug 25 Javascript
JavaScript 最佳实践:帮你提升代码质量
Dec 03 Javascript
基于JS实现移动端向左滑动出现删除按钮功能
Feb 22 Javascript
关于vue中 $emit的用法详解
Apr 12 Javascript
解决layer 关闭当前弹窗 关闭遮罩层 input值获取不到的问题
Sep 25 Javascript
6种JavaScript继承方式及优缺点(小结)
Feb 06 Javascript
React实现全选功能
Aug 25 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采集利器 Snoopy 试用心得
2011/07/03 PHP
php之Memcache学习笔记
2013/06/17 PHP
PHP Class&amp;Object -- PHP 自排序二叉树的深入解析
2013/06/25 PHP
tp5.1 实现setInc字段自动加1
2019/10/18 PHP
来自qq的javascript面试题
2010/07/24 Javascript
关于jQuery的inArray 方法介绍
2011/10/08 Javascript
js获取和设置属性的方法
2014/02/20 Javascript
jQuery ajax调用WCF服务实例
2014/07/16 Javascript
jquery插件方式实现table查询功能的简单实例
2016/06/06 Javascript
js css实现垂直方向自适应的三角提示菜单
2016/06/26 Javascript
浅谈js和css内联外联注意事项
2016/06/30 Javascript
ReactNative列表ListView的用法
2017/08/02 Javascript
jQuery判断网页是否已经滚动到浏览器底部的实现方法
2017/10/27 jQuery
深入理解JS中Number(),parseInt(),parseFloat()三者比较
2018/08/24 Javascript
微信小程序MUI导航栏透明渐变功能示例(通过改变rgba的a值实现)
2019/01/24 Javascript
详解vue中router-link标签所必备了解的属性
2019/04/15 Javascript
vue excel上传预览和table内容下载到excel文件中
2019/12/10 Javascript
Python文本处理之按行处理大文件的方法
2018/04/09 Python
利用matplotlib为图片上添加触发事件进行交互
2020/04/23 Python
分享29个基于Bootstrap的HTML5响应式网页设计模板
2015/11/19 HTML / CSS
html5借用repeating-linear-gradient实现一把刻度尺(ruler)
2019/09/09 HTML / CSS
什么是serialVersionUID
2016/03/04 面试题
会计专业应届生求职信
2013/11/24 职场文书
开会迟到检讨书
2014/01/08 职场文书
学校万圣节活动方案
2014/02/13 职场文书
爱岗敬业演讲稿
2014/05/05 职场文书
2014年母亲节演讲稿范文
2014/05/07 职场文书
党员反对四风思想汇报范文
2014/10/25 职场文书
2015年副班长工作总结
2015/05/15 职场文书
2016大学生就业指导课心得体会
2016/01/15 职场文书
求职自我评价参考范文
2019/05/16 职场文书
创业计划书之个人工作室
2019/08/22 职场文书
python爬虫请求库httpx和parsel解析库的使用测评
2021/05/10 Python
mybatis 获取无数据的字段不显示的问题
2021/07/15 Java/Android
ubuntu安装jupyter并设置远程访问的实现
2022/03/31 Python
《战锤40K:暗潮》跳票至9月 公布新宣传片
2022/04/03 其他游戏