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 相关文章推荐
控制打印时页眉角的代码
Feb 08 Javascript
jquery实现个人中心导航菜单效果和美观都非常不错
Sep 02 Javascript
node.js中的console.time方法使用说明
Dec 09 Javascript
Bootstrap精简教程
Nov 27 Javascript
jQuery插件实现文字无缝向上滚动效果代码
Feb 25 Javascript
BootStrap实用代码片段之一
Mar 22 Javascript
AngularJS 路由和模板实例及路由地址简化方法(必看)
Jun 24 Javascript
正则中的回溯定义与用法分析【JS与java实现】
Dec 27 Javascript
详解windows下vue-cli及webpack 构建网站(三)使用组件
Jun 17 Javascript
详解vue-cli项目中的proxyTable跨域问题小结
Feb 09 Javascript
微信小程序开发之点击按钮退出小程序的实现方法
Apr 26 Javascript
微信小程序如何实现点击图片放大功能
Jan 21 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截取utf-8中文字符串乱码的解决方法
2010/03/29 PHP
javascript标签在页面中的位置探讨
2013/04/11 Javascript
兼容IE和Firefox火狐的上下、左右循环无间断滚动JS代码
2013/04/19 Javascript
js获取上传文件大小示例代码
2014/04/10 Javascript
javascript表单验证大全
2015/08/12 Javascript
Angular Js文件上传之form-data
2015/08/28 Javascript
javascript拖拽应用实例
2016/03/25 Javascript
javascript滚轮控制模拟滚动条
2016/10/19 Javascript
js判断手机系统是android还是ios
2017/03/07 Javascript
微信小程序实战之登录页面制作(5)
2020/03/30 Javascript
Angular2使用Angular CLI快速搭建工程(一)
2017/05/21 Javascript
javascript ES6 新增了let命令使用介绍
2017/07/07 Javascript
关于js中的鼠标事件总结
2017/07/11 Javascript
three.js加载obj模型的实例代码
2017/11/10 Javascript
layui默认选中table的CheckBox复选框方法
2019/09/19 Javascript
js实现简易计算器小功能
2020/11/18 Javascript
[04:38]完美世界携手游戏风云打造 卡尔工作室饰品系统篇
2013/04/25 DOTA
[45:38]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#1Liquid VS Alliance第一局
2016/03/02 DOTA
python使用Berkeley DB数据库实例
2014/09/26 Python
python中enumerate函数遍历元素用法分析
2016/03/11 Python
python 实现将多条曲线画在一幅图上的方法
2019/07/07 Python
Python 读取 YUV(NV12) 视频文件实例
2019/12/09 Python
印尼综合在线预订网站:Tiket.com(机票、酒店、火车、租车和娱乐)
2018/10/11 全球购物
4s店总经理岗位职责
2013/12/31 职场文书
青年创业培训欢迎词
2014/01/08 职场文书
政法学院毕业生求职信
2014/02/28 职场文书
商务日语专业毕业生自荐信
2014/03/27 职场文书
股份合作协议书范本
2014/04/14 职场文书
三严三实心得体会范文
2014/10/13 职场文书
长城的导游词
2015/01/30 职场文书
2015年政治教研组工作总结
2015/07/22 职场文书
靠谱准确的求职信
2019/04/02 职场文书
2019升学宴主持词范本5篇
2019/10/09 职场文书
MySQL系列之十四 MySQL的高可用实现
2021/07/02 MySQL
Python如何快速找到多个字典中的公共键(key)
2022/04/29 Python
解决vue自定义组件@click点击失效问题
2022/04/30 Vue.js