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 容错处理代码, 屏蔽错误信息
Mar 09 Javascript
图片完美缩放
Sep 07 Javascript
如何解决Jquery库及其他库之间的$命名冲突
Sep 15 Javascript
如何在父窗口中得知window.open()出的子窗口关闭事件
Oct 15 Javascript
扩展IE中一些不兼容的方法如contains、startWith等等
Jan 09 Javascript
JavaScript中输出标签的方法
Aug 27 Javascript
EasyUI实现第二层弹出框的方法
Mar 01 Javascript
微信js-sdk地理位置接口用法示例
Oct 12 Javascript
jQuery双向列表选择器DIV模拟版
Nov 01 Javascript
用AngularJS来实现监察表单按钮的禁用效果
Nov 02 Javascript
seajs中最常用的7个功能、配置示例
Oct 10 Javascript
ES6 Promise对象概念及用法实例详解
Oct 15 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
Laravel相关的一些故障解决
2020/08/19 PHP
javascript Window及document对象详细整理
2011/01/12 Javascript
IE6/7/8/9不支持exec的简写方式
2011/05/25 Javascript
基于jQuery的投票系统显示结果插件
2011/08/12 Javascript
js querySelector和getElementById通过id获取元素的区别
2012/04/20 Javascript
jquery动画3.创建一个带遮罩效果的图片走廊
2012/08/24 Javascript
IE下写xml文件的两种方式(fso/saveAs)
2013/08/05 Javascript
js中onload与onunload的使用示例
2013/08/25 Javascript
javascript常用对话框小集
2013/09/13 Javascript
javascript获取select的当前值示例代码(兼容IE/Firefox/Opera/Chrome)
2013/12/17 Javascript
JS小游戏之象棋暗棋源码详解
2014/09/25 Javascript
NodeJs的优势和适合开发的程序
2016/08/14 NodeJs
微信小程序后台解密用户数据实例详解
2017/06/28 Javascript
bootstrap-table实现服务器分页的示例 (spring 后台)
2017/09/01 Javascript
jQuery访问浏览器本地存储cookie、localStorage和sessionStorage的基本用法
2017/10/20 jQuery
Angular实现双向折叠列表组件的示例代码
2017/11/21 Javascript
前端必备插件之纯原生JS的瀑布流插件Macy.js
2017/11/22 Javascript
vue 多入口文件搭建 vue多页面搭建的实例讲解
2018/03/12 Javascript
vue生命周期和react生命周期对比【推荐】
2018/09/19 Javascript
js将日期格式转换为YYYY-MM-DD HH:MM:SS
2020/09/18 Javascript
[43:58]DOTA2上海特级锦标赛C组败者赛 Newbee VS Archon第二局
2016/02/27 DOTA
Python中捕获键盘的方式详解
2019/03/28 Python
Python实现多线程下载脚本的示例代码
2020/04/03 Python
使用python实现学生信息管理系统
2021/02/25 Python
html5 CSS过度-webkit-transition使用介绍
2013/07/02 HTML / CSS
印度网上购物首选目的地:Flipkart
2016/08/01 全球购物
Expedia印度尼西亚站:预订酒店、廉价航班和度假套餐
2018/01/31 全球购物
婴儿地球:Baby Earth
2018/12/25 全球购物
String和StringBuffer的区别
2015/08/13 面试题
关于递归的一道.NET面试题
2013/05/12 面试题
计算机专业毕业生推荐信
2013/11/25 职场文书
技校学生个人职业生涯规划范文
2014/03/03 职场文书
平安建设工作方案
2014/06/02 职场文书
领导走群众路线整改措施思想汇报
2014/10/12 职场文书
2014年后勤工作总结
2014/11/18 职场文书
Nginx已编译的nginx-添加新模块
2021/04/01 Servers