Forum Moderators: open
[webmasterworld.com...]
However, I noticed that it did not recursively drill down into every list/array, so I made a small update to enable this. Essentially I changed the following line:
rString+=pad+"<item>"+obj[i]+"</item>\n";
to this:
rString+=pad+"<item>"+OBJtoXML(obj[i],d+1)+"</item>\n";
The complete code is below.
function objToXml(obj,d) {
d = (d) ? d : 0;
var rString = "\n";
var pad = "";
for (var i=0;i<d;i++) {
pad+=" ";
}
if (typeof obj==="object") {
if (obj.constructor.toString().indexOf("Array")!== -1){
for (i=0;i<obj.length;i++) {
rString+=pad+"<item>"+objToXml(obj[i],d+1)+"</item>\n";
}
rString=rString.substr(0,rString.length-1)
} else {
for(i in obj){
var val=objToXml(obj[i],d+1);
if(!val)
return false;
rString+=((rString==="\n")?"":"\n")+pad+"<"+i+">"+val+((typeof obj[i]==="object")?"\n"+pad:"")+"</"+i+">";
}
}
} else if (typeof obj === "string") {
rString=obj;
} else if (obj.toString) {
rString=obj.toString();
} else {
return false;
}
return rString;
}
function jsonToXml(json) {
return eval("objToXml("+json+");");
}