Reputation: 811
I have a data nested data structure or JSON
, how can I convert that into an XML
structure in Javascript.
[
{"loanId" : "LA00123", "MemberId" : "MI00123"},
{"loanId" : "LA001234", "MemberId" : "MI001234"}
]
Excepted result:
<result>
<loanID>LA00123</loanID>
<MemberId>MI00123</MemberId>
</result>
<result>
<loanID>LA001234</loanID>
<MemberId>MI001234</MemberId>
</result>
Upvotes: 1
Views: 2305
Reputation: 5940
If you're converting data into XML as a string, you could perform reduce on the array:
let obj = [{
"loanId": "LA00123",
"MemberId": "MI00123"
},
{
"loanId": "LA001234",
"MemberId": "MI001234"
}
];
const toXml = (data) => {
return data.reduce((result, el) => {
return result + `<result><loadId>"${el.loanId}"</loadID><MemberId>${el.MemberId}</MemberId></result>\n`
}, '')
}
console.log(toXml(obj));
Creating XML object (overkill):
let obj = [{
"loanId": "LA00123",
"MemberId": "MI00123"
},
{
"loanId": "LA001234",
"MemberId": "MI001234"
}
];
let doc = document.implementation.createDocument(null, "myXML");
obj.forEach(a => {
let result = doc.createElement("result");
Object.entries(a).forEach(b => {
let node = doc.createElement(b[0]);
node.append(doc.createTextNode(b[1]));
result.append(node);
});
doc.documentElement.append(result);
});
console.log(new Array(...doc.documentElement.children).reduce((a, b) => a + new XMLSerializer().serializeToString(b), ''));
Upvotes: 1
Reputation: 12039
Simply by an iteration you can preapre the XML element first and the join by empty character.
Here Array.prototype.map() is used to make an iteration over the array and Array.prototype.join() is used to concatenate the prepared XML element to final result.
const data = [{"loanId" : "LA00123", "MemberId" : "MI00123"},{"loanId" : "LA001234", "MemberId" : "MI001234"}]
const result = data.map(obj => `<result><loanID>${obj.loanId}</loanID><MemberId>${obj.MemberId}</MemberId></result>`).join('')
console.log(result)
Upvotes: 2