有谁知道如何使用 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/