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

Node.js Nodejs:解析XML,编辑值,使用sax-js模块保存最终结果,node.js,xml-parsing,saxparser,Node.js,Xml Parsing,Saxparser,我想要实现的是: 解析XML块 编辑某些值 将最终结果保存在 新xml文件 该模块是sax js: 该模块具有一些内置机制来读取/写入任何数据 我认为这项任务是小菜一碟;相反,我一整天都在与它斗争 这是我的密码: var fs = require('fs'); var saxStream = require("sax").createStream(true); saxStream.on("text", function (node) { if (node === 'foo') {

我想要实现的是:

  • 解析XML块
  • 编辑某些值
  • 将最终结果保存在 新xml文件
该模块是sax js:

该模块具有一些内置机制来读取/写入任何数据

我认为这项任务是小菜一碟;相反,我一整天都在与它斗争

这是我的密码:

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"));
我确实认为更新一些内容(见上面的评论)就足以将更新后的流写入一个新文件

这个代码怎么了

谢谢你的帮助

罗兰

模块不允许您这样修改节点。如果您查看一下,就会发现输入被不加区别地传递到输出


然而,所有的希望都没有失去!看看-这将是一个很好的起点,你想做什么。但是,如果您仍然想从流中提取
.pipe()
,则必须做一些工作来实现流的可读部分。

根据Deoxa的回答,我为此编写了一个NPM模块如果您知道XML的一般结构,可以尝试XML流。它将XML流转换为对象,但有一个实用程序将其转换回XML字符串: