js实现的xml对象转json功能示例

这篇文章主要介绍了js实现的xml对象转json功能,结合实例形式分析了javascript转换成xml所涉及的字符串、对象、数组、遍历等操作技巧与使用方法,需要的朋友可以参考下

本文实例讲述了js实现的xml对象转json功能。分享给大家供大家参考,具体如下:

支持无限级别xml结构对象转json,并且支持任意标签属性转json(兼容ie8等浏览器)

xml字符串转xml对象:

 function loadXml(str) { if (str == null) { return null; } var doc = str; try{ doc = createXMLDOM(); doc.async = false; doc.loadXML(str); }catch(e){ doc = $.parseXML(str); } return doc; } 
 /** *xml对象转json对象 *xmlObj:xml对象 *nodename:节点路径('ROOT/ITEM') *isarray:true,强制返回数组对象 **/ function xmltojson(xmlObj,nodename,isarray){ var obj=$(xmlObj); var itemobj={}; var nodenames=""; var getAllAttrs=function(node){//递归解析xml 转换成json对象 var _itemobj={}; var notNull=false; var nodechilds=node.childNodes; var childlenght=nodechilds.length; var _attrs=node.attributes; var firstnodeName="#text"; try{ firstnodeName=nodechilds[0].nodeName; }catch(e){} if((childlenght>0&&firstnodeName!="#text")||_attrs.length>0){ var _childs=nodechilds; var _childslength=nodechilds.length; var _fileName_=""; if(undefined!=_attrs){ var _attrslength=_attrs.length; for(var i=0; i<_attrslength; i++){//解析xml节点属性 var attrname=_attrs[i].nodeName; var attrvalue=_attrs[i].nodeValue; _itemobj[attrname]=attrvalue; } } for (var j = 0; j <_childslength; j++) {//解析xml子节点 var _node = _childs[j]; var _fildName = _node.nodeName; if("#text"==_fildName){break;}; if(_itemobj[_fildName]!=undefined){//如果有重复的节点需要转为数组格式 if(!(_itemobj[_fildName] instanceof Array)){ var a=_itemobj[_fildName]; _itemobj[_fildName]=[a];//如果该节点出现大于一个的情况 把第一个的值存放到数组中 } } var _fildValue=getAllAttrs(_node); try{ _itemobj[_fildName].push(_fildValue); }catch(e){ _itemobj[_fildName]=_fildValue; _itemobj["length"]=1; } } }else{ _itemobj=(node.textContent==undefined)?node.text:node.textContent; } return _itemobj; }; if(nodename){ nodenames=nodename.split("/") } for(var i=0;i0){ itemobj[item.nodeName]=getAllAttrs(item); }else{ itemobj[item.firstChild.nodeName]=getAllAttrs(item.firstChild); } } }); if(nodenames.length>1){ itemobj=itemobj[nodenames[nodenames.length-1]]; } if(isarray&&!(itemobj instanceof Array)&&itemobj!=undefined){ itemobj=[itemobj]; } return itemobj; }; 

使用方法:

 var xmlstr="" + "" + "张三" + "00001" + "" + "" + "李四" + "00002" + "" + "" + "李四" + "00002" + "" + ""; var xmlobj=loadXml(xmlstr); 

参数设置:

(1)  xmltojson(xmlobj);//返回结果如下

 { "USERS": { "USER": [ { "state": "0", "USERNAME": { "type": "String" }, "length": 1, "USERID": { "type": "String" } }, { "state": "1", "USERNAME": { "type": "String", "size": "100" }, "length": 1, "USERID": "00002" }, { "USERNAME": "李四", "length": 1, "USERID": "00002" } ], "length": 1 } } 

(2)xmltojson(xmlobj,'USERS/USER',true);返回结果如下:

 [ { "state": "0", "USERNAME": { "type": "String" }, "length": 1, "USERID": { "type": "String" } }, { "state": "1", "USERNAME": { "type": "String", "size": "100" }, "length": 1, "USERID": "00002" }, { "USERNAME": "李四", "length": 1, "USERID": "00002" } ] 

PS:这里再为大家提供几款关于xml操作的在线工具供大家参考使用:

在线XML/JSON互相转换工具:
http://tools.0133.cn/code/xmljson

在线格式化XML/在线压缩XML:
http://tools.0133.cn/code/xmlformat

XML在线压缩/格式化工具:
http://tools.0133.cn/code/xml_format_compress

XML代码在线格式化美化工具:
http://tools.0133.cn/code/xmlcodeformat

更多关于JavaScript相关内容可查看本站专题:《JavaScript操作XML文件技巧总结》、《JavaScript中json操作技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结

希望本文所述对大家JavaScript程序设计有所帮助。

以上就是js实现的xml对象转json功能示例的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » JavaScript 教程