从Node.js中的多个流中收集数据

时间:2015-06-18 15:07:12

标签: javascript node.js stream

我需要从多个流中收集已解析的XML数据。

我从路径中获取文件列表,并创建多个流来解析XML数据。我需要的数据是在JSONStream中聚合的。

在Node.js中有更好的方法吗?

let fs = require('fs');
let JSONStream = require('JSONStream');
let XmlStream = require('xml-stream');

async function getJsonStream(path) {

  let fileNames = await getFileNames(path);

  let jsonStream = JSONStream.stringify();

  for(let i = 0; i < fileNames.length; i++) {
    let fileStream = fs.createReadStream(fileNames[i]);
    let xmlStream = new XmlStream(fileStream);

    xmlStream.on('endElement: Item', function(el) {
      jsonStream.write(el);
    });

    xmlStream.on('end', function() {
      if (i === fileNames.length - 1) {
        jsonStream.end();
      }
    });
  }

  return jsonStream;
}

0 个答案:

没有答案