Nodejs:parsingXML,编辑值,使用sax-js模块保存最终结果

我想达到的是:

  • parsing一大块XML
  • 编辑一些值
  • 将最终结果保存在一个新的xml文件中

这个模块是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")); 

我确实认为更新一些内容(参见上面的注释)就足以将更新后的stream写入一个新文件。

这个代码有什么问题?

谢谢你的帮助,

罗兰

萨克斯模块不允许你修改这样的节点。 如果你看一下这段代码 ,你会发现input被无差别地传递给输出。

然而,所有的希望都没有消失! 看看这个漂亮的例子 – 这将是你想要做的一个很好的起点。 但是,如果您仍然希望能够使用.pipe() ,则必须执行一些工作来实现stream的可读部分。

如果您知道XML的一般结构,则可以尝试xml-flow。 它将XMLstream转换成对象,但有一个实用工具将它们转换回xmlstring: https : //github.com/matthewmatician/xml-flow