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函数的执行 onload or ready
Dec 12 Javascript
js 通过cookie实现刷新不变化树形菜单
Oct 30 Javascript
Jquery遍历Json数据的方法
Apr 20 Javascript
详谈LABJS按需动态加载js文件
May 07 Javascript
js实现仿MSN带关闭功能的右下角弹窗代码
Sep 04 Javascript
jQuery如何跳转到另一个网页 就这么简单
Dec 28 Javascript
webpack2.0搭建前端项目的教程详解
Apr 05 Javascript
angularjs实现搜索的关键字在正文中高亮出来
Jun 13 Javascript
Three.js加载外部模型的教程详解
Nov 10 Javascript
微信小程序实现卡片左右滑动效果的示例代码
May 01 Javascript
koa2 用户注册、登录校验与加盐加密的实现方法
Jul 22 Javascript
Vue自定义多选组件使用详解
Sep 08 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多态代码实例
2015/06/26 PHP
php利用smtp类实现电子邮件发送
2015/10/30 PHP
php rsa 加密,解密,签名,验签详解
2016/12/06 PHP
PHP 实现手机端APP支付宝支付功能
2018/06/07 PHP
javascript cookie操作类的实现代码小结附使用方法
2010/06/02 Javascript
javascript学习笔记(十六) 系统对话框(alert、confirm、prompt)
2012/06/20 Javascript
javascript使用中为什么10..toString()正常而10.toString()出错呢
2013/01/11 Javascript
javascript相等运算符与等同运算符详细介绍
2013/11/09 Javascript
javascript获取浏览器类型和版本的方法(js获取浏览器版本)
2014/03/13 Javascript
IE浏览器IFrame对象内存不释放问题解决方法
2014/08/22 Javascript
gridview生成时如何去掉style属性中的border-collapse
2014/09/30 Javascript
node.js中的fs.readlink方法使用说明
2014/12/17 Javascript
JavaScript中的值类型转换介绍
2014/12/31 Javascript
程序员必知35个jQuery 代码片段
2015/11/05 Javascript
实践中学习AngularJS表单
2016/03/21 Javascript
Javascript的比较汇总
2016/07/25 Javascript
原生js实现秒表计时器功能
2017/02/16 Javascript
jQuery中Chosen三级联动功能实例代码
2017/03/07 Javascript
Js利用console计算代码运行时间的方法示例
2017/09/24 Javascript
vue.js实现带日期星期的数字时钟功能示例
2018/08/28 Javascript
JavaScript对象的特性与实践应用深入详解
2018/12/30 Javascript
JQuery样式与属性设置方法分析
2019/12/07 jQuery
JSON 入门教程基础篇 json入门学习笔记
2020/09/22 Javascript
快速解决vue2+vue-cli3项目ie兼容的问题
2020/11/17 Vue.js
python中管道用法入门实例
2015/06/04 Python
Python编程中对文件和存储器的读写示例
2016/01/25 Python
Python3使用requests登录人人影视网站的方法
2016/05/11 Python
基于Python执行dos命令并获取输出的结果
2019/12/30 Python
浅谈python 类方法/静态方法
2020/09/18 Python
澳大利亚最受欢迎的美发用品目的地:AMR
2019/08/28 全球购物
2014年英语教研组工作总结
2014/12/06 职场文书
大学生个人总结范文
2015/02/15 职场文书
2016年中秋节寄语大全
2015/12/07 职场文书
检讨书范文
2019/04/16 职场文书
使用opencv-python如何打开USB或者笔记本前置摄像头
2022/06/21 Python
Python  序列化反序列化和异常处理的问题小结
2022/12/24 Python