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 相关文章推荐
JavaScript 继承的实现
Jul 09 Javascript
javascript 浏览器检测代码精简版
Mar 04 Javascript
基于jquery可配置循环左右滚动例子
Sep 09 Javascript
JavaScript代码编写中各种各样的坑和填坑方法
Jun 06 Javascript
AngularJs IE Compatibility 兼容老版本IE
Sep 01 Javascript
JavaScript基于自定义函数判断变量类型的实现方法
Nov 23 Javascript
javascript常用的设计模式
Feb 09 Javascript
微信小程序自定义底部弹出框
Nov 16 Javascript
element中el-container容器与div布局区分详解
May 13 Javascript
解决vue单页面多个组件嵌套监听浏览器窗口变化问题
Jul 30 Javascript
vue项目中openlayers绘制行政区划
Dec 24 Vue.js
js实现碰撞检测
Jan 29 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类的使用 实例代码讲解
2009/12/28 PHP
php中创建和调用webservice接口示例
2014/07/25 PHP
PHP实现图片自动清理的方法
2015/07/08 PHP
php编程每天必学之表单验证
2016/03/01 PHP
详解Yii2高级版引入bootstrap.js的一个办法
2017/03/21 PHP
PHP获取MySQL执行sql语句的查询时间方法
2018/08/21 PHP
仅Firefox中链接A无法实现模拟点击以触发其默认行为
2011/07/31 Javascript
javascript中的startWith和endWith的几种实现方法
2013/05/07 Javascript
JavaScript列表框listbox全选和反选的实现方法
2015/03/18 Javascript
Bootstrap免费字体和图标网站(值得收藏)
2017/03/16 Javascript
JS简单判断字符在另一个字符串中出现次数的2种常用方法
2017/04/20 Javascript
JS中将多个逗号替换为一个逗号的实现代码
2017/06/23 Javascript
webpack配置打包后图片路径出错的解决
2018/04/26 Javascript
node实现简单的增删改查接口实例代码
2019/08/22 Javascript
[03:09]2014DOTA2国际邀请赛 Mushi前队友送上祝福
2014/07/12 DOTA
[52:14]VG vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
python设置windows桌面壁纸的实现代码
2013/01/28 Python
python使用Berkeley DB数据库实例
2014/09/26 Python
python+pyqt5实现KFC点餐收银系统
2019/01/24 Python
python实现抽奖小程序
2020/04/15 Python
Django中如何使用sass的方法步骤
2019/07/09 Python
Python 3 判断2个字典相同
2019/08/06 Python
python实现ftp文件传输功能
2020/03/20 Python
java程序员面试交流
2012/11/29 面试题
个人求职简历中英文自我评价
2013/12/16 职场文书
竞选班长演讲稿
2013/12/30 职场文书
酒吧创业计划书
2014/01/18 职场文书
药店主任岗位责任制
2014/02/10 职场文书
卫校毕业生个人自我鉴定
2014/04/28 职场文书
小学社会实践活动总结
2014/07/03 职场文书
学生上课迟到检讨书
2015/01/01 职场文书
人事局接收函
2015/01/30 职场文书
2015年乡镇民政工作总结
2015/05/13 职场文书
肖申克的救赎观后感
2015/06/02 职场文书
教育教学读书笔记
2015/07/02 职场文书
「Manga Time Kirara MAX」2022年5月号封面公开
2022/03/21 日漫