创建一个XML文档流,删除声明和doctype标记

时间:2015-07-10 15:32:23

标签: xml node.js node.js-stream

继承人我想做什么 目标:删除带有声明和doctype标记的XML文档的管道流。
问题
第1部分。最好的办法是什么。我应该使用FS模块的createReadStream和createWriteStream方法吗?
第2部分。如何从一个流中删除文本并将其传输到另一个流中?

1 个答案:

答案 0 :(得分:0)

您可以使用fs.createReadStreamfs.createWriteStream分别读取和写入xml数据。现在要删除一些文本,您需要一个可读写的双工流。在Node 0.10+中,您可以使用内置Transform Stream。这是一个使用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)