我目前正在将从外部 API 接收的 json 转换为 XML,并且 XML 由我的 API 返回:
var result = util.getAdis(firstName, lastName, dob, function(err,response,data){
if(!err) {
var data = JSON.parse(data);
var root = builder.create('ADIS')
data.forEach(person => {
var item = root.ele('person');
item.att('GivenName', person.GivenName);
item.att('MiddleInitial', person.MiddleInitial);
item.att('Surname', person.Surname);
item.att('Event', person.Event);
item.att('EventDate', person.EventDate);
})
var xml = root.end({ pretty: true });
res.type('application/xml');
res.send(xml);
} else {
console.log(err)
res.send(500)
}
});
我正在使用an XML builder这很好用。但是有没有更好的方法来编写这段代码呢?所以它是动态的,我不想手动分配每个元素。
JSON 如下所示:
[{
GivenName: 'Mable',
MiddleInitial: 'G',
Surname: 'Stewart',
Event: 'A',
EventDate: '2014-07-16',
}]
最佳答案
遵循package的用法第一个例子,他们向我们展示了.ele
函数的使用方法。
.ele('node_name', {node_attr_object: attr_value} , 'node_value')
在您的情况下,您需要创建一个名为 person
的节点,其所有属性都是 data
项的属性,然后在循环中,您只放置对象作为ele
函数的第二个参数,而不是手动设置每个属性。
var result = util.getAdis(firstName, lastName, dob, function (err, response, data) {
if (!err) {
var data = JSON.parse(data);
var root = builder.create('ADIS')
data.forEach(person => {
root.ele('person', person);
})
var xml = root.end({ pretty: true });
res.type('application/xml');
res.send(xml);
} else {
console.log(err)
res.send(500)
}
});
数据是
[{
GivenName: 'Mable',
MiddleInitial: 'G',
Surname: 'Stewart',
Event: 'A',
EventDate: '2014-07-16',
}]
您将得到一个 xml 字符串,例如:
<?xml version="1.0"?>
<ADIS>
<person GivenName="Mable" MiddleInitial="G" Surname="Stewart" Event="A" EventDate="2014-07-16"/>
</ADIS>
关于javascript - 如何将 JSON 数据转换为 XML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59347935/