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

时间:2013-03-27 16:07:55

标签: node.js xml-parsing saxparser

我想要达到的目标是:

  • 解析一大块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"));

我确实认为更新某些内容(请参阅上面的评论)就足以将更新的流写入新文件。

此代码有什么问题?

感谢您的帮助,

罗兰

2 个答案:

答案 0 :(得分:1)

sax模块不允许您修改这样的节点。如果您查看this bit of code,您会看到输入被无差别地传递到输出。

然而,所有希望都没有丢失!查看pretty-print example - 这将是您想要做的一个很好的起点。但是,如果你仍希望能够.pipe()出现它,你必须做一些工作来实现流的可读部分。

答案 1 :(得分:0)

根据deoxxa的回答,我为此https://www.npmjs.com/package/sax-streamer

编写了一个NPM模块