源生javascript将xml转换成json格式
2015-11-04 20:21
661 查看
这是我第一次写博客哈,代码可能不是很规范,可能会有一些小BUG。支持xml文件内嵌json格式支字符串。闲话不多说,直接上代码。
function xmlToJson(xml) { var obj = {}; if(xml.childNodes.length!=0&&xml.childNodes.length!=null){ //判断子节点为1个且为文本节点,将值赋给json对象,childNodes会把文本识别为文本节点所以取子节点的value值(即是文本节点的内容) if(xml.childNodes.length==1&&xml.childNodes.item(0).nodeType==3){ obj[xml.nodeName]=xml.childNodes.item(0).nodeValue.replace(/\s*$|^\s*/g,""); }else{ for(var i=0; i<xml.childNodes.length;i++){ var x=xml.childNodes.item(i); //标签里面有字符串又有标签时,处理该字符串 if(x.nodeType!=1){ var value_text=x.nodeValue.replace(/\s*$|^\s*/g,""); if(value_text!=""&&value_text!=null&&/^[\],:{}\s]*$/.test(value_text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, "@") .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, "]") .replace(/(?:^|:|,)(?:\s*\[)+/g, ""))){ obj.text=$.parseJSON(value_text); } else if(value_text!=""&&value_text!=null){ obj.text=value_text; } continue;} if(x.childNodes.length>1){//判断,子节点大于1的话肯定有元素节点 obj[x.tagName]=xmlToJson(x) } else if(x.childNodes.length==1){//子节点为1的话肯定是文本节点,子节点为0则为null var text= x.childNodes[0].nodeValue.replace(/\s*$|^\s*/g,""); //判断text是否为空且是否为json格式,是的话将其转换为json,否则将其赋值给json对象 if (text!=null&&text!=""&&/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, "@") .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, "]") .replace(/(?:^|:|,)(?:\s*\[)+/g, ""))){ obj[x.tagName] = $.parseJSON(text); }else{ obj[x.tagName]= text; } } } } } return obj; }
</pre><p>下面是xml文件</p><p><pre name="code" class="html"><?xml version="1.0" encoding="utf-8"?> <animals> <dog color='Black'> <name>Rufus</name> <breed>labrador</breed> </dog> <dag breed='whippet'> Adopted <name>Marty</name> </dag> <certificates>[{"traceInfo":{"检验机构名称":"新西兰CCIC","检验证书编号":"XI150002XIM","检验证书日期":"2015-08-21"}},{"original":{"发证机构":"NZ CHAMBERS OF COMMERCE INC.","编号":"22 2015 05654","日期":"2015-07-28"}},{"labInfo":{"实验室名称":"Eurofins NZ Laboratory Services Ltd./Analytica laboratories Ltd.","检测报告编号":"HAUORA_实验室检测报告_XI150002XIM","认可机构":"IANZ"}}]</certificates> <cat color="White"> <name>Matilda</name> </cat> </animals>下面是打印出来的json
有问题可以评论,我会抽时间来回复的。
相关文章推荐
- JQuery1——基础($对象,选择器,对象转换)
- Android学习笔记(二九):嵌入浏览器
- Android java 与 javascript互访(相互调用)的方法例子
- JavaScript演示排序算法
- javascript实现10进制转为N进制数
- XML 与 JSON 优劣对比
- 2019年开发人员应该学习的8个JavaScript框架
- HTML中的script标签研究
- 对一个分号引发的错误研究
- 异步流程控制:7 行代码学会 co 模块
- ES6 走马观花(ECMAScript2015 新特性)
- JavaScript拆分字符串时产生空字符的原因
- Canvas 在高清屏下绘制图片变模糊的解决方法
- 新注册
- IE8开发人员工具教程(二)
- VBA将excel数据表生成JSON文件