0

这是我尝试做
的目标:删除声明和 doctype 标记的 XML 文档管道流。
问题
第 1 部分。解决此问题的最佳方法是什么。我应该使用 FS 模块的 createReadStream 和 createWriteStream 方法吗?
第 2 部分。如何从一个流中删除文本并将其通过管道传输到另一个流中?

4

1 回答 1

0

您可以使用fs.createReadStreamfs.createWriteStream分别读取和写入 xml 数据。现在要删除一些文本,您需要一个可读写的双工流。在 Node 0.10+ 中,您可以使用内置的Transform Stream。这是使用转换流的简单代码:

var Transform = require('stream').Transform 
var util = require('util');
var fs = require('fs')

util.inherits(MyTransform, Transform);
function MyTransform(options) {
  if (!(this instanceof MyTransform))
    return new MyTransform(options);

  Transform.call(this, options);

  // init Transform
  Transform.call(this, options);
}

MyTransform.prototype._transform = function (chunk, encoding, done) {
  //do your processing with chunk
  this.push(chunk);
  done();
};

rstream = fs.createReadStream('input.xml')
wstream = fs.createWriteStream('output.xml')
tstream = new MyTransform()

rstream
  .pipe(tstream)
  .pipe(wstream)
于 2015-07-10T20:56:52.107 回答