xmlToHash
JavaScript, XML
Парсер 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;
};
