I am trying to convert the JSON to XML but not getting exact output.In My JSON having array object it not converting that to XML array.Mainly array object is not converting into XML as expected
JavaScript
x
22
22
1
var InputJSON = "{"body":{"entry": [{ "fullURL" : "abcd","Resource": "1234"},{ "fullURL" : "efgh","Resource": "5678"}]}}";
2
var output = eval("OBJtoXML("+InputJSON+");")
3
4
function OBJtoXML(obj) {
5
var xml = '';
6
for (var prop in obj) {
7
xml += "<" + prop + ">";
8
if(obj[prop] instanceof Array) {
9
for (var array in obj[prop]) {
10
xml += OBJtoXML(new Object(obj[prop][array]));
11
}
12
} else if (typeof obj[prop] == "object") {
13
xml += OBJtoXML(new Object(obj[prop]));
14
} else {
15
xml += obj[prop];
16
}
17
xml += "</" + prop + ">";
18
}
19
var xml = xml.replace(/</?[0-9]{1,}>/g,'');
20
return xml
21
}
22
Actual Output:
JavaScript
1
9
1
<body>
2
<entry>
3
<fullURL>abcd</fullURL>
4
<Resource>1234</Resource>
5
<fullURL>efgh</fullURL>
6
<Resource>5678</Resource>
7
</entry>
8
</body>
9
Expected Output:
JavaScript
1
11
11
1
<body>
2
<entry>
3
<fullURL>abcd</fullURL>
4
<Resource>1234</Resource>
5
</entry>
6
<entry>
7
<fullURL>efgh</fullURL>
8
<Resource>5678</Resource>
9
</entry>
10
</body>
11
Please guide me if i am missing anything from the code to get my expected result
Advertisement
Answer
replace your OBJtoXML
function with
JavaScript
1
21
21
1
function OBJtoXML(obj) {
2
var xml = '';
3
for (var prop in obj) {
4
xml += obj[prop] instanceof Array ? '' : "<" + prop + ">";
5
if (obj[prop] instanceof Array) {
6
for (var array in obj[prop]) {
7
xml += "<" + prop + ">";
8
xml += OBJtoXML(new Object(obj[prop][array]));
9
xml += "</" + prop + ">";
10
}
11
} else if (typeof obj[prop] == "object") {
12
xml += OBJtoXML(new Object(obj[prop]));
13
} else {
14
xml += obj[prop];
15
}
16
xml += obj[prop] instanceof Array ? '' : "</" + prop + ">";
17
}
18
var xml = xml.replace(/</?[0-9]{1,}>/g, '');
19
return xml
20
}
21