修改“NodeJS”上的XML标记

时间:2012-10-30 10:31:59

标签: 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]);
        });
    });
}

这会读取节点值,但我需要修改标记值。 请帮忙。

1 个答案:

答案 0 :(得分: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对象,但我们将根节点的名称更改为&#34; n&#34;正如你的问题所述。

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

相关问题