一个实用的 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-to-json xml转JSON插件

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

jquery 解析返回的xml和json

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

[js] js 将字符串xml 转成 json对象

//解析xml字符串变量为IXMLDOMDocument2 function parseXML(data) { var xml, tmp; if (window.DOMParser)...
  • boys1999
  • boys1999
  • 2015年04月21日 12:08
  • 2933

jquery 解析返回的xml和json

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

JS实现xml和json(也可看做对象)互转

最近有个前端的需求: 解析后台xml, 并添加删除和修改, 然后传给后台, 思来想去, 最简单的办法就是利用xml和对象互转, 即从后台读取xml传到前台并形成表格(已有代码,或者用对象生成表格), ...
  • zrc199021
  • zrc199021
  • 2016年07月14日 23:02
  • 2058

JS实现xml与json格式的互转

json与xml格式互转是我们日常开发中的常见需求,如何在前端实现这两种格式的转换呢? 这里需要用到两个js插件:ObjTree.js、jkl-dumper.js 话不多说,直接上示例: ...
  • u010295919
  • u010295919
  • 2017年02月08日 11:30
  • 1880

xml转json高效率的java实现

xml转json高效率的java实现,效率是json-lib的4倍,引用jar少
  • tkggetg
  • tkggetg
  • 2015年08月19日 17:54
  • 6953

c++实现Xml和json互转

1、下载c语言的cJson库源码,库很小,只有两个文件cJSON.c和cJSON.h。下载地址:https://sourceforge.net/projects/cjson/ 2、c++实现Xml和j...
  • kfy2011
  • kfy2011
  • 2016年06月28日 10:55
  • 3106

xml字符串转换为json对象

前段时间在做一个生活缴费项目,需要调用一个第三方缴费平台的接口,这个平台是基于http请求,但是返回的内容是xml字符串。当时是想把xml字符串直接转换为对象,但是各个接口返回的内容都不同,无法转换为...
  • duguwuyi
  • duguwuyi
  • 2016年05月25日 19:01
  • 6768

json字符串与对象的相互转换-javascript/jQuery

前言        我们知道,如果在java中json对象与java对象的转换很简单就能实现,利用阿里巴巴的fastjson或者jackjson轻松实现,或者利用json包中的net包中的工具也可以实...
  • chenleixing
  • chenleixing
  • 2015年04月28日 08:56
  • 6894
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:一个实用的 Javascript XML to JSON Object 对象的转换 (JQuery)
举报原因:
原因补充:

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