Forum Moderators: open

Message Too Old, No Replies

Convert JSON to XML

         

wood_tah

12:50 pm on Jan 26, 2009 (gmt 0)

10+ Year Member



I was doing some searching for a solution to this problem, and I came across the following post:

[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+");");
}

httpwebwitch

1:09 am on Jan 29, 2009 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member



Thanks wood_tah! Good to have snippets like these in your code arsenal.