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.lazyload.js实现页面延迟载入
Dec 22 Javascript
html中使用javascript调用本地程序(exe、doc等)实现代码
Apr 26 Javascript
使用Math.floor与Math.random取随机整数的方法详解
May 07 Javascript
js中的onchange和onpropertychange (onchange无效的解决方法)
Mar 08 Javascript
jQuery的事件委托实例分析
Jul 15 Javascript
深入浅析JavaScript中对事件的三种监听方式
Sep 29 Javascript
第二章之Bootstrap 页面排版样式
Apr 25 Javascript
Bootstrap Table表格一直加载(load)不了数据的快速解决方法
Sep 17 Javascript
JS去除字符串中空格的方法
Feb 14 Javascript
vue中的计算属性的使用和vue实例的方法示例
Dec 04 Javascript
javascript面向对象三大特征之多态实例详解
Jul 24 Javascript
vue基于better-scroll仿京东分类列表
Jun 30 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获取随机数字和字母的方法详解
2013/06/06 PHP
PHP引用(&amp;)各种使用方法实例详解
2014/03/20 PHP
php发送get、post请求的6种方法简明总结
2014/07/08 PHP
javascript div 遮罩层封锁整个页面
2009/07/10 Javascript
JQuery中对Select的option项的添加、删除、取值
2013/08/25 Javascript
Jquery 实现checkbox全选方法
2015/01/28 Javascript
jQuery检测返回值的数据类型
2015/07/13 Javascript
只要1K 纯JS脚本送你一朵3D红色玫瑰
2016/08/09 Javascript
Bootstrap时间选择器datetimepicker和daterangepicker使用实例解析
2016/09/17 Javascript
el表达式 写入bootstrap表格数据页面的实例代码
2017/01/11 Javascript
js实现自定义进度条效果
2017/03/15 Javascript
JavaScript实现网页头部进度条刷新
2017/04/16 Javascript
node.js+jQuery实现用户登录注册AJAX交互
2017/04/28 jQuery
JS动态添加元素及绑定事件造成程序重复执行解决
2017/12/07 Javascript
React styled-components设置组件属性的方法
2018/08/07 Javascript
通过JS运行机制的角度说说作用域
2019/03/12 Javascript
使用jquery的cookie实现登录页记住用户名和密码的方法
2019/03/13 jQuery
浅谈python对象数据的读写权限
2016/09/12 Python
Ubuntu+python将nii图像保存成png格式
2019/07/18 Python
python3.7 利用函数os pandas利用excel对文件名进行归类
2019/09/29 Python
Window版下在Jupyter中编写TensorFlow的环境搭建
2020/04/10 Python
Python中的Cookie模块如何使用
2020/06/04 Python
Python self用法详解
2020/11/28 Python
Parfumdreams英国:香水和化妆品
2019/05/10 全球购物
英国第一职业高尔夫商店:Clickgolf.co.uk
2020/11/18 全球购物
网络工程师职业规划
2014/02/10 职场文书
支行行长竞聘演讲稿
2014/05/15 职场文书
学校节能减排方案
2014/06/13 职场文书
低碳环保演讲稿
2014/08/28 职场文书
"9.18"国耻日演讲稿范文
2014/09/14 职场文书
2014个人年度工作总结范文
2014/12/24 职场文书
仓管员岗位职责范本
2015/04/01 职场文书
对公司的意见和建议
2015/06/04 职场文书
实体类或对象序列化时,忽略为空属性的操作
2021/06/30 Java/Android
MySql分区类型及创建分区的方法
2022/04/13 MySQL
本地搭建minio文件服务器(使用bat脚本启动)的方法
2022/07/15 Servers