2015-07-10 65 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) 
相关问题