修改“NodeJS”上的XML标记

3

有人知道如何使用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]);
        });
    });
}

这段代码读取了节点的值,但我需要修改标签的值。请帮忙。

1个回答

0

使用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(即根节点的名称)和root.data,它是反序列化XML文档的实际数据。
然后在序列化时,我们将相同的root.data对象返回,但是我们将根节点的名称更改为您问题中指定的“n”。
由于damn-simple-xml可以使用流来输入XML并将其内容作为XML块输出,因此该库具有非常小的内存占用量。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接