【问题标题】:How to convert objects of array in to XML in Javascript如何在Javascript中将数组对象转换为XML
【发布时间】:2019-07-31 05:11:33
【问题描述】:
我有一个数据嵌套数据结构或JSON,如何在Javascript 中将其转换为XML 结构。
[
{"loanId" : "LA00123", "MemberId" : "MI00123"},
{"loanId" : "LA001234", "MemberId" : "MI001234"}
]
异常结果:
<result>
<loanID>LA00123</loanID>
<MemberId>MI00123</MemberId>
</result>
<result>
<loanID>LA001234</loanID>
<MemberId>MI001234</MemberId>
</result>
【问题讨论】:
标签:
javascript
arrays
xml
javascript-objects
【解决方案1】:
只需通过迭代,您就可以先准备 XML 元素,然后通过空字符进行连接。
这里Array.prototype.map() 用于对数组进行迭代,Array.prototype.join() 用于将准备好的 XML 元素连接到最终结果。
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)
【解决方案2】:
如果要将数据转换为 XML 作为字符串,则可以对数组执行 reduce:
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));
创建 XML 对象(矫枉过正):
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), ''));