我想要达到的目标是:
该模块是 sax-js:https://github.com/isaacs/sax-js#readme
该模块具有一些内置的读/写机制。
我认为这项任务将是小菜一碟;相反,我一整天都在苦苦挣扎。
这是我的代码:
var fs = require('fs');
var saxStream = require("sax").createStream(true);
saxStream.on("text", function (node) {
if (node === 'foo') { //the content I want to update
node = 'blabla';
}
});
fs.createReadStream("mysongs.xml")
.pipe(saxStream)
.pipe(fs.createWriteStream("mysongs-copy.xml"));
我确实认为更新某些内容(请参阅上面的评论)就足以将更新的流写入新文件。
此代码有什么问题?
感谢您的帮助,
罗兰
答案 0 :(得分:1)
sax模块不允许您修改这样的节点。如果您查看this bit of code,您会看到输入被无差别地传递到输出。
然而,所有希望都没有丢失!查看pretty-print example - 这将是您想要做的一个很好的起点。但是,如果你仍希望能够.pipe()
出现它,你必须做一些工作来实现流的可读部分。
答案 1 :(得分:0)
根据deoxxa的回答,我为此https://www.npmjs.com/package/sax-streamer
编写了一个NPM模块