javascript 将xml字符串转换成json对象

xml字符串转换,首先要把字符串转换成dom对象,再从dom对象里获取你要的参数,可用getElementsByTagName之类的方法。以下是2个xml字符串转成dom对象的方法
方法1:

loadXML: function(xmlString) {
    var xmlDoc = null;
    try //Internet Explorer
    {
        xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
        xmlDoc.async = "false";
        xmlDoc.loadXML(xmlString);
    } catch (e) {
        try //Firefox, Mozilla, Opera, etc.
        {
            parser = new DOMParser();
            xmlDoc = parser.parseFromString(xmlString, "text/xml"); 
            return xmlDoc;
        } catch (e) {
            return;
        }
    }
    return xmlDoc;
}

方法二

loadXML: function(xmlString) {
    var xmlDoc = null;
    //判断浏览器的类型
    //支持IE浏览器 
    if (!window.DOMParser && window.ActiveXObject) { //window.DOMParser 判断是否是非ie浏览器
        var xmlDomVersions = ['MSXML.2.DOMDocument.6.0', 'MSXML.2.DOMDocument.3.0', 'Microsoft.XMLDOM'];
        for (var i = 0; i < xmlDomVersions.length; i++) {
            try {
                xmlDoc = new ActiveXObject(xmlDomVersions[i]);
                xmlDoc.async = false;
                xmlDoc.loadXML(xmlString); //loadXML方法载入xml字符串
                break;
            } catch (e) {}
        }
    }
    //支持Mozilla浏览器
    else if (window.DOMParser && document.implementation && document.implementation.createDocument) {
        try {
            /* DOMParser 对象解析 XML 文本并返回一个 XML Document 对象。
             * 要使用 DOMParser,使用不带参数的构造函数来实例化它,然后调用其 parseFromString() 方法
             * parseFromString(text, contentType) 参数text:要解析的 XML 标记 参数contentType文本的内容类型
             * 可能是 "text/xml""application/xml""application/xhtml+xml" 中的一个。注意,不支持 "text/html"。
             */
            domParser = new DOMParser();
            xmlDoc = domParser.parseFromString(xmlString, 'text/xml');
        } catch (e) {}
    } else {
        return null;
    }
    return xmlDoc;
}

解析数据:

xml2Json: function(xmlString) {
    var xmlDoc = this.loadXML(xmlString),
    root = xmlDoc.firstChild,
    obj = {};
    if (root && root.children && root.children.length > 0) {
    //以下解析参数步骤等可根据自己xml做修改
        for (var i = 0; i < root.children.length; i++) {
            var child = root.children[i],
            attributes = child.attributes,
            tagName = child.tagName;
            var value = child.textContent;
            if (attributes[0] && attributes[0].nodeName == 'T') {
                if (attributes[0].nodeValue == 'N') { //number
                    value = parseFloat(value);
                } else if (attributes[0].nodeValue == 'T') { //time
                    value = new Date(value);
                }
            }
            obj[tagName] = value;
        }
    }
    return obj;
}

测试数据:

" 
    <ROOT T="O" N="5" AM_VER="2"> 
        <startTime T="T">2015-12-04 03:20:00startTime> 
        <startIndex T="N">1startIndex> 
        <endIndex T="N">1000endIndex> 
        <type T="N">1type> 
        <endTime T="T">2015-12-06 03:20:00endTime> 
    ROOT> "

你可能感兴趣的:(js,xml字符串,json对象)