0
繼承人我在做什麼
目標:刪除了聲明和doctype標記的XML文檔的管道流。
問題
第1部分。最好的方法是什麼?我應該使用FS模塊的createReadStream和createWriteStream方法嗎?
第2部分。我如何從一個流中刪除文本並將其轉換爲另一個流?創建一個XML文檔流,並聲明和doctype標記被刪除
繼承人我在做什麼
目標:刪除了聲明和doctype標記的XML文檔的管道流。
問題
第1部分。最好的方法是什麼?我應該使用FS模塊的createReadStream和createWriteStream方法嗎?
第2部分。我如何從一個流中刪除文本並將其轉換爲另一個流?創建一個XML文檔流,並聲明和doctype標記被刪除
您可以分別使用fs.createReadStream
和fs.createWriteStream
讀取和寫入xml數據。現在要刪除一些文本,您需要一個可讀寫的雙工流。在節點0.10+中,您可以使用內置的Transform Stream。下面是使用Transform流的簡單代碼:
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)