有没有人知道如何使用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]);
});
});
}
这会读取节点值,但我需要修改标记值。 请帮忙。
答案 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块,因此该库的内存占用非常小。