一个实用的 Javascript XML to JSON Object 对象的转换 (JQuery)

原创 2007年10月11日 11:38:00
一个实用的 Javascript XML to JSON  Object 对象的转换 (JQuery)

一个用来将xml文件转换成对象的插件

xml文件如下
<?xml version="1.0" encoding="UTF-8" ?>
<root>
<content>
  <plugins>TreeView</plugins>
  <plugins>ListGrid</plugins>
  <plugins>ListBox</plugins>
</content>
<pool>1</pool>
</root>

生成的对象为:



调用

var xml = $.loadXML("PluginConf.xml");
var obj = $(xml).toObject().get(0);
alert(obj.pool);

以下是源码下载

/**
 * 转换xml为对象形式
 * @return {Object}
 * @param {XMLHttpRequest} elXML
 
*/
$.fn.toObject 
= function (){
    
if (this==nullreturn null;
    
var retObj = new Object;
    buildObjectNode(retObj,
/*jQuery*/this.get(0));
    
return $(retObj);
    
function buildObjectNode(cycleOBJ,/*Element*/elNode){
        
/*NamedNodeMap*/
        
var nodeAttr=elNode.attributes;
        
if(nodeAttr != null){
            
if (nodeAttr.length&&cycleOBJ==null) cycleOBJ=new Object; 
            
for(var i=0;i<nodeAttr.length;i++){
                cycleOBJ[nodeAttr[i].name]
=nodeAttr[i].value;
            }
        }
        
var nodeText="text";
        
if (elNode.text==null) nodeText="textContent";
        
/*NodeList*/
        
var nodeChilds=elNode.childNodes;
        
if(nodeChilds!=null){
            
if (nodeChilds.length&&cycleOBJ==null) cycleOBJ=new Object; 
            
for(var i=0;i<nodeChilds.length;i++){
                
if (nodeChilds[i].tagName!=null){
                    
if (nodeChilds[i].childNodes[0]!=null&&nodeChilds[i].childNodes.length<=1&&(nodeChilds[i].childNodes[0].nodeType==3||nodeChilds[i].childNodes[0].nodeType==4)){
                        
if (cycleOBJ[nodeChilds[i].tagName]==null){
                            cycleOBJ[nodeChilds[i].tagName]
=nodeChilds[i][nodeText];
                        }
else{
                            
if (typeof(cycleOBJ[nodeChilds[i].tagName])=="object"&&cycleOBJ[nodeChilds[i].tagName].length){
                                cycleOBJ[nodeChilds[i].tagName][cycleOBJ[nodeChilds[i].tagName].length]
=nodeChilds[i][nodeText];
                            }
else{
                                cycleOBJ[nodeChilds[i].tagName]
=[cycleOBJ[nodeChilds[i].tagName]];
                                cycleOBJ[nodeChilds[i].tagName][
1]=nodeChilds[i][nodeText];
                            }
                        }
                    }
else{
                        
if (nodeChilds[i].childNodes.length){
                            
if (cycleOBJ[nodeChilds[i].tagName]==null){
                                cycleOBJ[nodeChilds[i].tagName]
=new Object;
                                buildObjectNode(cycleOBJ[nodeChilds[i].tagName],nodeChilds[i]);
                            }
else{
                                
if (cycleOBJ[nodeChilds[i].tagName].length){
                                    cycleOBJ[nodeChilds[i].tagName][cycleOBJ[nodeChilds[i].tagName].length]
=new Object;
                                    buildObjectNode(cycleOBJ[nodeChilds[i].tagName][cycleOBJ[nodeChilds[i].tagName].length
-1],nodeChilds[i]);
                                }
else{
                                    cycleOBJ[nodeChilds[i].tagName]
=[cycleOBJ[nodeChilds[i].tagName]];
                                    cycleOBJ[nodeChilds[i].tagName][
1]=new Object;
                                    buildObjectNode(cycleOBJ[nodeChilds[i].tagName][
1],nodeChilds[i]);
                                }
                            }
                        }
else{
                            cycleOBJ[nodeChilds[i].tagName]
=nodeChilds[i][nodeText];
                        }
                    }
                }
            }
        }
    }
}

/**
 * @return {Element}
 * @param {String} _url
 
*/
$.loadXML 
= function (_url){
    
var ret;
    $.ajax({
          type:
"get",
          url:_url,
        async:
false,
          dataType:
"xml",
        success:
function(xml){
            ret 
= xml;
        }
      });
    
return ret.documentElement;
}

jquery 解析返回的xml和json

一、jquery 解析ajax请求返回的xml格式的数据 1、发送ajax请求 function  jqxml(){     $.ajax({         url:"http://localh...
  • QH_JAVA
  • QH_JAVA
  • 2015年08月09日 18:41
  • 3382

jQuery xml-to-json xml转JSON插件

  • 2015年03月17日 12:01
  • 856KB
  • 下载

js xml对象转json

支持无限级别xml结构对象转json,并且支持任意表情属性转json
  • u011545548
  • u011545548
  • 2016年07月04日 14:06
  • 2753

Jquery 实现xml转json

代码
  • weixin_35928208
  • weixin_35928208
  • 2016年09月12日 13:16
  • 200

jQuery插件-JSON与XML互转

jQuery插件-JSON与XML互转 sf2gis@163.com 2015年12月16日   1  目标:JSON与XML相互转换 2 原理:字符串与正则表达式处理。 3 流程:安装j...
  • sf2gis2
  • sf2gis2
  • 2015年12月16日 20:09
  • 3164

XML和JSON优缺点-- 面试题

我的总结: 一般而言:配置文件用XML,传输数据用JSON(所谓的轻量级体现的解析上); 逐步解析用XML(SAX技术可以边传输边解析),整体解析用JSON(目前只能整体一次性解析); so,大...
  • qq373036876
  • qq373036876
  • 2016年07月27日 19:54
  • 3745

jquery-xmlToJson.js

  • 2017年11月04日 14:22
  • 74KB
  • 下载

读取xml文件转换为json文件

在平时经常遇到需要把xml文件转换为json格式数据的需求,这里将实现读取指定目录的xml文件并吧内容转换为json格式然后输出到指定目录。项目采用spring boot项目,下面是实现的主要步骤:一...
  • wj903829182
  • wj903829182
  • 2017年11月29日 14:39
  • 429

Json 与 XML 的互相转换

net.sf.json.xml.XMLSerializer private static String json2Xml(JSONObject json,String rootName){ St...
  • z69183787
  • z69183787
  • 2013年10月25日 16:23
  • 1959

PHP利用 JSON 将XML转换为数组

在很多开发项目中,我们都会遇到将XML文件转换为数组使用,因此在本篇PHP教程中,UncleToo和大家一起学习如何转换XML为数组。 现在有一个uncletoo.xml的配置文件,格式如下...
  • libinemail
  • libinemail
  • 2015年12月24日 15:46
  • 1171
收藏助手
不良信息举报
您举报文章:一个实用的 Javascript XML to JSON Object 对象的转换 (JQuery)
举报原因:
原因补充:

(最多只允许输入30个字)