xml - 修改 "NodeJS"上的 XML 标签

标签 xml node.js

有谁知道如何使用 NodeJS 修改 XML 文件的标签值

这是我的 XML 文件:

<note>
    <to>Tove</to>
    <from>Jani</from>
    <heading>Reminder</heading>
    <body>Don't forget me this weekend!</body>
</note>

我想更改 <node><n>

我在 Windows 上运行 nodeJS。到目前为止,我有以下代码;

var parser = new xml2js.Parser();
function xmltxt(response, postData){
    fs.readFile( './foo.xml', function(err, data) {
        parser.parseString(data, function (err, result) {
            console.dir(result.note.to[0]);
        });
    });
}

这会读取 Node 值,但我需要修改标签值。 请帮忙。

最佳答案

使用 damn-simple-xml您可以执行以下操作:

var Serializer = require("damn-simple-xml");  // constructor
var dsx = new Serializer();
var fs = require("fs");

var out = fs.createWriteStream("./foo2.xml");

dsx.deserialize(fs.createReadStream("./foo.xml"), function(err, root) {
    if (err) {
        console.log(err);
        return;
    }
    dsx.serialize({
        name: "n",
        data: root.data
    }, 
    function(err, xmlpart, level) {
        if (err) {
            console.log(err);
            return;
        }
        out.write(xmlpart);
        if (level === 0) { // XML streaming done
            out.end(); // closes the stream.
        }
    });
});

在前面的例子中,我们在反序列化回调中接收到一个root对象。该对象由 root.name(即根 Node 的名称)和 root.data 组成,后者是反序列化 XML 文档中的实际数据。

然后在序列化时,我们返回相同的 root.data 对象,但我们将根 Node 的名称更改为您问题中指定的“n”。

由于 damn-simple-xml 可以使用流输入 xml 并将其内容输出为 XML block ,因此该库占用的内存非常小。

关于xml - 修改 "NodeJS"上的 XML 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13137120/

相关文章:

xml - 将 XML 解析为包含 slice 的结构

java - JAXB继承-非抽象基类

java - 将 LocalDateTime 格式化为带有偏移量的 XMLGregorianCalender

node.js - 如何使用 adal-node 身份验证上下文验证访问 token ?

mysql - 如何将 Angular、Nodejs 和 Mysql Web 应用程序部署到 Heroku?

java - 通过快捷应用快捷方式打开 fragment

node.js - Azure Functions 使用 import 而不是 require

带有 Express 应用程序的 Node.js 在 Heroku 上崩溃,在本地工作

javascript - 不传播的原因是什么(es 6传播运算符)javascript错误对象

android - 何时对 XML 属性使用问号?