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 setattribute批量设置css样式
Nov 26 Javascript
jQuery 源码分析笔记(5) jQuery.support
Jun 19 Javascript
Javascript中的this绑定介绍
Sep 22 Javascript
JQueryEasyUI datagrid框架的进阶使用
Apr 08 Javascript
把jquery 的dialog和ztree结合实现步骤
Aug 02 Javascript
浅析jQuery Mobile的初始化事件
Dec 03 Javascript
JS中递归函数
Jun 17 Javascript
JS键盘版计算器的制作方法
Dec 03 Javascript
js实现截图保存图片功能的代码示例
Feb 16 Javascript
bootstrapvalidator之API学习教程
Jun 29 Javascript
vue watch自动检测数据变化实时渲染的方法
Jan 16 Javascript
使用RN Animated做一个“添加购物车”动画的方法
Sep 12 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 smarty模版引擎中变量操作符及使用方法
2009/12/11 PHP
PHP变量的定义、可变变量、变量引用、销毁方法
2013/12/20 PHP
编译PHP报错configure error Cannot find libmysqlclient under usr的解决方法
2014/06/27 PHP
PHP利用Cookie设置用户30分钟未操作自动退出功能
2017/07/03 PHP
PHP-FPM 设置多pool及配置文件重写操作示例
2019/10/02 PHP
关于javascript document.createDocumentFragment()
2009/04/04 Javascript
javascript 浏览器判断 绑定事件 arguments 转换数组 数组遍历
2009/07/06 Javascript
javascript中的缓动效果实现程序
2012/12/29 Javascript
javaScript对文字按照拼音排序实现代码
2013/12/27 Javascript
JavaScript数据类型详解
2015/04/01 Javascript
jQuery结合CSS制作漂亮的select下拉菜单
2015/05/03 Javascript
JavaScript点击按钮后弹出透明浮动层的方法
2015/05/11 Javascript
javascript页面倒计时实例
2015/07/25 Javascript
实现非常简单的js双向数据绑定
2015/11/06 Javascript
Bootstrap和Angularjs配合自制弹框的实例代码
2016/08/24 Javascript
详解layui中的树形关于取值传值问题
2018/01/16 Javascript
js将URL网址转为16进制加密与解密函数
2020/03/04 Javascript
JS判断浏览器类型与操作系统的方法分析
2020/04/30 Javascript
原生JS实现音乐播放器
2021/01/26 Javascript
[46:20]DOTA2-DPC中国联赛 正赛 PSG.LGD vs LBZS BO3 第二场 1月22日
2021/03/11 DOTA
python实现探测socket和web服务示例
2014/03/28 Python
从Python的源码来解析Python下的freeblock
2015/05/11 Python
python爬取51job中hr的邮箱
2016/05/14 Python
Python结巴中文分词工具使用过程中遇到的问题及解决方法
2017/04/15 Python
python 类对象和实例对象动态添加方法(分享)
2017/12/31 Python
Python自定义函数计算给定日期是该年第几天的方法示例
2019/05/30 Python
python3注册全局热键的实现
2020/03/22 Python
基于python生成英文版词云图代码实例
2020/05/16 Python
django中嵌套的try-except实例
2020/05/21 Python
超市仓管员岗位职责
2014/04/07 职场文书
教师读书活动总结
2014/05/07 职场文书
涉外离婚协议书怎么写
2014/11/20 职场文书
员工手册编写范本
2015/05/14 职场文书
初中思想品德教学反思
2016/02/24 职场文书
如何理解PHP核心特性命名空间
2021/05/28 PHP
什么是动态刷新率DRR? Windows11动态刷新率功能介绍
2021/11/21 数码科技