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 来操作字符串(一些字符串函数)
Feb 15 Javascript
js 居中漂浮广告
Mar 21 Javascript
基于jquery的cookie的用法
Jan 10 Javascript
AngularJS中实现显示或隐藏动画效果的方式总结
Dec 31 Javascript
javaScript数组迭代方法详解
Apr 14 Javascript
分享javascript实现的冒泡排序代码并优化
Jun 05 Javascript
React教程之封装一个Portal可复用组件的方法
Jan 02 Javascript
vue实现点击当前标签高亮效果【推荐】
Jun 22 Javascript
jQuery实现简单复制json对象和json对象集合操作示例
Jul 09 jQuery
Vue加载组件、动态加载组件的几种方式
Aug 31 Javascript
详解微信小程序之scroll-view的flex布局问题
Jan 16 Javascript
vant-ui AddressEdit地址编辑和van-area的用法说明
Nov 03 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+Tidy-完美的XHTML纠错+过滤
2007/04/10 PHP
php定时执行任务设置详解
2015/02/06 PHP
php使用parse_url和parse_str解析URL
2015/02/22 PHP
Yii数据库缓存实例分析
2016/03/29 PHP
javascript getElementsByClassName函数
2010/04/01 Javascript
分享27款非常棒的jQuery 表单插件
2011/03/28 Javascript
如何获取JQUERY AJAX返回的JSON结果集实现代码
2012/12/10 Javascript
Highcharts入门之基本属性
2016/08/02 Javascript
JS中的hasOwnProperty()、propertyIsEnumerable()和isPrototypeOf()
2016/08/11 Javascript
AngularJS控制器controller给模型数据赋初始值的方法
2017/01/04 Javascript
js实现简单的手风琴效果
2017/02/27 Javascript
Angular实现可删除并计算总金额的购物车功能示例
2017/12/26 Javascript
layui表格checkbox选择全选样式及功能的实例
2018/03/07 Javascript
在 Linux/Unix 中不重启 Vim 而重新加载 .vimrc 文件的流程
2018/03/21 Javascript
AngularJS标签页tab选项卡切换功能经典实例详解
2018/05/16 Javascript
微信小程序实现topBar底部选择栏效果
2018/07/20 Javascript
这样回答继承可能面试官更满意
2019/12/10 Javascript
基于JS实现操作成功之后自动跳转页面
2020/09/25 Javascript
antd中table展开行默认展示,且不需要前边的加号操作
2020/11/02 Javascript
8个非常实用的Vue自定义指令
2020/12/15 Vue.js
python将字符串转换成数组的方法
2015/04/29 Python
Python中文件I/O高效操作处理的技巧分享
2017/02/04 Python
10分钟教你用python动画演示深度优先算法搜寻逃出迷宫的路径
2019/08/12 Python
python os.path.isfile 的使用误区详解
2019/11/29 Python
python获取命令行参数实例方法讲解
2020/11/02 Python
CSS3实现超慢速移动动画效果非常流畅无卡顿
2014/06/15 HTML / CSS
详解CSS中iconfont的使用
2015/08/04 HTML / CSS
html5+svg学习指南之SVG基础知识
2014/12/17 HTML / CSS
数组越界问题
2015/10/21 面试题
Python的两道面试题
2013/06/29 面试题
促销活动总结范文
2014/04/30 职场文书
个人对照检查材料思想汇报(四风问题)
2014/09/25 职场文书
教师作风建设剖析材料
2014/10/11 职场文书
财务总监岗位职责
2015/02/03 职场文书
银行保安拾金不昧表扬稿
2015/05/05 职场文书
Spring 使用注解开发
2022/05/20 Java/Android