前端xml字符串转换json数据

/**
 * xml字符串转换json数据
 * @param {Object} xml
 */
function xmlObj2json(xml) {
    
    
    function xmlStr2XmlObj(xmlStr) {
    
    
        var xmlObj = {
    
    };
        if (document.all) {
    
    
            var xmlDom = new ActiveXObject("Microsoft.XMLDOM");
            xmlDom.loadXML(xmlStr);
            xmlObj = xmlDom;
        } else {
    
    
            xmlObj = new DOMParser().parseFromString(xmlStr, "text/xml");
        }
        return xmlObj;
    }

    function xml2json(xml) {
    
    
        try {
    
    
            var obj = {
    
    };
            if (xml.children.length > 0) {
    
    
                for (var i = 0; i < xml.children.length; i++) {
    
    
                    var item = xml.children.item(i);
                    var nodeName = item.nodeName;
                    if (typeof (obj[nodeName]) == "undefined") {
    
    
                        obj[nodeName] = xml2json(item);
                    } else {
    
    
                        if (typeof (obj[nodeName].push) == "undefined") {
    
    
                            var old = obj[nodeName];
                            obj[nodeName] = [];
                            obj[nodeName].push(old);
                        }
                        obj[nodeName].push(xml2json(item));
                    }
                }
            } else {
    
    
                obj = xml.textContent;
            }
            return obj;
        } catch (e) {
    
    
            console.log(e.message);
        }
    }


    var xmlObj = xmlStr2XmlObj(xml);
    var jsonObj = {
    
    };
    if (xmlObj.childNodes.length > 0) {
    
    
        jsonObj = xml2json(xmlObj);
    }
    return jsonObj;
}

猜你喜欢

转载自blog.csdn.net/qq_36678194/article/details/129209964