我正在使用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);
});

08-15 14:39