源生javascript将xml转换成json格式

这是我第一次写博客哈,代码可能不是很规范,可能会有一些小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; i1){//判断,子节点大于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;
}

 
  

下面是xml文件



	
		Rufus
		labrador
	
	
		Adopted
		Marty
	
	[{"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"}}]
	
		Matilda
	

下面是打印出来的json

源生javascript将xml转换成json格式_第1张图片

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

你可能感兴趣的:(源生javascript将xml转换成json格式)