`
laodaobazi
  • 浏览: 276544 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

将返回的XML数据转化为JSON格式

阅读更多

代码如下:

/**
 * 转换xml为对象形式
 * @return {Object}
 * @param {XMLHttpRequest} elXML
 */
$.fn.toObject = function (){
    if (this==null) return 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 ,_data){
    var ret;
    $.ajax({
    	data : _data ,
	    type:"post",
	    url:_url,
        async:false,
        dataType:"xml",
        success:function(xml){
            ret = xml;
        } ,
        error : function(){
        	Ext.MessageBox.show({
				 title: '提示',
				 msg: '操作失败!',
				 buttons: Ext.MessageBox.OK,
 				 icon: Ext.MessageBox.INFO
             }); 
        }
      });
    return ret.documentElement;
}

 

 

使用

var xml = $.loadXML(contextPath+'/dataItemManagerAction.do?method=query' ,{
			'typeId' : 'deptNo'
		} );
var obj = $(xml).toObject().get(0);
var record = "";
Ext.each(obj.DataItem, function(value,index,a){
	record += "<option value='"+value.id+"'>"+value.name+"</option>"
}) ;
$('#'+id).append(record);

 

分享到:
评论

相关推荐

    将string类型xml字符串转为json字符串

    在IT行业中,数据交换和存储经常需要在不同的格式之间转换,XML(可扩展标记语言)和JSON(JavaScript对象表示法)就是两种常见的数据格式。XML以其结构化和语义化的特性,广泛应用于Web服务和数据交换,而JSON因其...

    Node.js-用于将XML转换为JSON和JSON到XML的Android库

    在Android开发中,可能由于不同的接口或服务返回的数据格式不同,需要将XML数据转换为JSON,或者相反,以便于处理。 描述中的“用于将XML转换为JSON和JSON到XML的Android库”进一步明确了这个库的功能,即它提供了...

    jQuery xml-to-json xml转JSON插件

    jQuery xml-to-json插件是一种用于将XML数据转换为JavaScript Object Notation (JSON)格式的工具。在Web开发中,XML和JSON都是常见的数据交换格式,但它们有着不同的应用场景和优势。XML(Extensible Markup ...

    js下xml转json和json转xml

    2. **递归转换JSON**:从JSON根对象开始,递归地将每个键值对转换成XML元素。 3. **处理数据类型**:JSON支持各种数据类型,如字符串、数字、布尔值等,需要适当地转换为XML元素或属性。 4. **处理数组**:当遇到...

    IOS XML转JSON数据

    - 在解析XML和转换JSON的过程中,可能会遇到错误,例如格式不正确、内存不足等。记得检查并处理这些错误,通常通过`NSError`对象来获取错误信息。 5. **性能优化** - 对于大量XML数据,使用第三方库如SSXMLKit或...

    json自动转换成xml的json包

    这对于那些需要在JSON和XML之间进行数据互换的项目来说尤其有用,例如在企业级移动应用的开发中,可能需要将服务器返回的JSON数据转换为XML格式,以便于进一步处理或与XSLT(eXtensible Stylesheet Language ...

    okHttp访问返回JSON,XML解析实例

    本篇将详细讲解如何使用OkHttp进行网络访问,并解析返回的JSON与XML数据。 首先,我们需要了解OkHttp的基本用法。OkHttp是一个异步的HTTP客户端,它通过减少网络延迟和内存使用来提高性能。创建一个OkHttpClient...

    Springmvc如何返回xml及json格式数据

    - **错误尝试1**:将XML数据转换为String直接返回,可能导致中文乱码,且浏览器会将该字符串当作HTML文本处理,无法正确解析XML标签。 - **错误尝试2**:直接返回对象,如果对象没有被Spring MVC支持的JSON库(如...

    Java数据格式转换成json

    在 Java 中,有多种库可以用来将 Java 对象转换为 JSON 格式,如 Jackson、Gson 和 org.json 等。 **1. 使用 Jackson** Jackson 是一个流行的 Java 库,用于序列化 Java 对象为 JSON,以及反序列化 JSON 为 Java ...

    Xml2Json and Json2Xml

    3. 返回JSON:递归结束后,得到的是一个代表XML结构的JavaScript对象,可以使用`JSON.stringify()`将其转换为JSON字符串。 JSON转XML的步骤类似: 1. 解析JSON:使用`JSON.parse()`将JSON字符串转换为JavaScript...

    通过js把xml转化成json

    在使用Ajax的时候,通常是将数据以XML的格式返回客户端,然后使用Javascript解析DOM结构。但W3C自带的方法和属性在操作的时候不是很方便。从网上找到一个SoftXMLLib.js,提供了使用XPATH访问节点的方式。对于复杂...

    xml2json.zip

    本压缩包"xml2json.zip"包含了在JavaScript环境中将XML数据转换为JSON格式的相关资源。 "xml2json.php"可能是一个PHP脚本,它实现了XML到JSON的转换。在服务器端,PHP可以解析XML文档,然后将其转换为JSON格式,...

    PB读写JSON格式数据

    1. **JSON解析**:使用`JsonParse()`函数可以将JSON字符串转换为PowerBuilder的对象结构,这样就可以通过对象的方法和属性来访问数据。 2. **JSON序列化**:相反,`JsonStringify()`函数可以将PB对象转换成JSON字符...

    jsonview,转换json格式

    在实际使用中,这可能包括将大型的、未格式化的JSON字符串转化为可读的树状视图,或者将JSON数据转换成其他格式,如CSV或XML,以便进一步处理。 **文件名称列表:JsonView** 这表明压缩包内可能包含JSONView的安装...

    xml/Json转换工具类

    在Java开发中,我们经常需要将XML数据转换为JSON,或者反之,以便于前端和后端之间的通信。本篇将详细介绍如何使用Java工具类进行XML与JSON的转换,并介绍相关知识。 首先,`pom依赖.txt`文件中应包含的是Maven项目...

    jquery-xmlToJson.js

    总结来说,"jquery-xmlToJson.js"是一个用于XML到JSON转换的jQuery插件,它能够帮助开发者轻松地将XML数据转化为更适应JavaScript环境的JSON格式,提高数据处理的效率,并且兼容多种jQuery版本。在进行Web开发时,...

    XML String 转成JSON

    当我们需要在使用XML的系统和使用JSON的系统之间进行数据交互时,就需要将XML字符串转换为JSON格式。 XML是一种标记语言,它允许自定义标签来描述数据,并且支持嵌套结构。XML文档通常由元素、属性、文本内容等组成...

    动态调取webservice返回json数据并处理

    1. 解析JSON:使用JSON库(如JavaScriptSerializer, Newtonsoft.Json的Json.NET等)将接收到的JSON字符串转换为C#对象。例如,如果JSON数据表示一个数组,可以解析成List;如果表示一个对象,可以解析成自定义的类...

    XMLto JSON 源码

    在C#编程环境中,经常需要将XML数据转换为JSON格式,以适应轻量级的数据传输和前端展示需求。本项目"XMLto JSON 源码"正是为此目的设计,它提供了一个C#编写的`XmlToJson`类,能够方便地将XML字符串转换为JSON字符串...

    asp.net json格式数据

    同样,`JavaScriptSerializer`类的`Deserialize`方法可以完成这个任务,将JSON数据转换回指定类型的对象。 2. **AJAX和JSON**: - ASP.NET AJAX(Asynchronous JavaScript and XML)允许在不刷新整个页面的情况下...

Global site tag (gtag.js) - Google Analytics