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

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

4

1 回答 1

0

使用该死的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 块输出,因此该库的内存占用非常小。

于 2015-03-30T17:04:26.407 回答