日期:2014-05-16 浏览次数:20525 次
代码如下:
/**
* 转换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 r