我正在使用xml2js从我的寄存器中构建一个.xml。对于每个元素,我需要将键设置为相同的名称,例如:key:具有属性id的产品
预期结果:
<products>
<product id="H12896">
<name>Grand Hotel New York</name>
<price>120.80</price>
</product>
<product id="...">
...
</product>
</products>
我的代码:
var products = [];
_.each(list, function(element) {
var obj = {
name: element.title,
price: element.price,
};
products.push(obj);
});
var builder = new xml2js.Builder({rootName: 'products'});
var xml = builder.buildObject(products);
fs.writeFile('pacotes.xml', xml, (err) => {
if (err) throw (err);
});
输出结果:
<products>
<0>
<name>Mountain Do</name>
<price>0</price>
</0>
</products>
我检查了文档,但是什么也没有。
谢谢
最佳答案
您没有使用XMLBuilder的原因吗? https://github.com/oozcitak/xmlbuilder-js/
XMLBuilder似乎更适合您想要做的事情,并且越来越受欢迎(例如:上个月有400万次下载)。 xml2js更适合用JavaScript读取,但是XMLBuilder绝对是您想要使用的。
而且,如果我没看错……xml2js仍然是在XMLBuilder上构建的。
var builder = require('xmlbuilder'),
xml = builder.create('root'),
products = xml.ele('products'),
product;
_.each(list, function(element) {
product = products.ele('product');
product.att('id', element.id);
product.ele('name', null, element.name);
product.ele('price', null, element.price);
});
xml = xml.end();
fs.writeFile('pacotes.xml', xml, (err) => {
if (err) throw (err);
});