2015-07-10 62 views
0

繼承人我在做什麼
目標:刪除了聲明和doctype標記的XML文檔的管道流。
問題
第1部分。最好的方法是什麼?我應該使用FS模塊的createReadStream和createWriteStream方法嗎?
第2部分。我如何從一個流中刪除文本並將其轉換爲另一個流?創建一個XML文檔流,並聲明和doctype標記被刪除

回答

0

您可以分別使用fs.createReadStreamfs.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) 
相關問題