xmlToHash

JavaScript, XML

Jump to: navigation, search

Парсер XML частного случая.

window.xmlToHash = function(xml) {
    var hash = {};
    if (!xml.childNodes.length) return null;
    else if (xml.childNodes.length == 1 &&
        xml.childNodes[0].nodeName.charAt(0) == '#') {
        return xml.childNodes[0].nodeValue;
    } else {
        var nodes = {};
        for (var i = 0; i < xml.childNodes.length; ++i) {
            if (xml.childNodes[i].nodeName.charAt(0) != '#') {
                var nodeName = xml.childNodes[i].nodeName;
                if (!nodes[nodeName]) {
                    hash[nodeName] = xmlToHash(xml.childNodes[i]);
                    nodes[nodeName] = 1;
                } else if (nodes[nodeName] == 1) {
                    var node = hash[nodeName];
                    hash[nodeName] = [];
                    hash[nodeName][0] = node;
                    hash[nodeName][1] = xmlToHash(xml.childNodes[i]);
                    ++nodes[nodeName];
                } else hash[nodeName][nodes[nodeName]++] =
                    xmlToHash(xml.childNodes[i]);
            }
        }
    }
    return hash;
};

Personal tools
ссылка