源生javascript将xml转换成json格式

来源:互联网 发布:python 书籍推荐 编辑:程序博客网 时间:2024/06/05 16:16
这是我第一次写博客哈,代码可能不是很规范,可能会有一些小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

有问题可以评论,我会抽时间来回复的。

1 0
原创粉丝点击