keif's posterous

Convert XML to JSON with JavaScript

Convert XML to JSON with JavaScript

Written by David Walsh on Monday, April 4, 2011

The JavaScript

It's important to point out that Titanium's Titanium.XML.DOMDocument object implements DOM2-level structures.  Here's the magic XML to JSON code:

Copy Code
// Changes XML to JSONfunction xmlToJson(xml) {    // Create the return object  var obj = {};  if (xml.nodeType == 1) { // element    // do attributes    if (xml.attributes.length > 0) {    obj["@attributes"] = {};      for (var j = 0; j < xml.attributes.length; j++) {        var attribute = xml.attributes.item(j);        obj["@attributes"][attribute.nodeName] = attribute.nodeValue;      }    }  } else if (xml.nodeType == 3) { // text    obj = xml.nodeValue;  }  // do children  if (xml.hasChildNodes()) {    for(var i = 0; i < xml.childNodes.length; i++) {      var item = xml.childNodes.item(i);      var nodeName = item.nodeName;      if (typeof(obj[nodeName]) == "undefined") {        obj[nodeName] = xmlToJson(item);      } else {        if (typeof(obj[nodeName].length) == "undefined") {          var old = obj[nodeName];          obj[nodeName] = [];          obj[nodeName].push(old);        }        obj[nodeName].push(xmlToJson(item));      }    }  }  return obj;};

Nice - I've been researching this recently for a similar project.

To Posterous, Love Metalab