gpt4 book ai didi

xml - 如何使用node.js快速在XML文件中附加 Node 而不需要字符串比较

转载 作者:太空宇宙 更新时间:2023-11-03 23:34:55 26 4
gpt4 key购买 nike

这里提出了一个解决方案:How to append to certain line of file?

我把解决方案复制在这里供引用

var fs = require('fs');

var xmlFile;
fs.readFile('someFile.xml', function (err, data) {
if (err) throw err;
xmlFile = data;

var newXmlFile = xmlFile.replace('</xml>', '') + 'Content' + '</xml>';

fs.writeFile('someFile.xml', newXmlFile, function (err) {
if (err) throw err;
console.log('Done!');
});
});

但是上面的解决方案需要 '</xml>' 的字符串匹配字符串。如果我们知道文件的最后一行始终是 '</xml>'有没有什么方法可以通过消除字符串比较来加速代码?还有其他更有效的方法来完成这项任务吗?

最佳答案

您既不需要读取文件的全部内容,也不需要使用 replace因为这样做。您可以从固定位置覆盖内容 - 这里fileSize-7 ,长度'</xml>' +1:

var fs = require('fs');

//content to be inserted
var content = '<text>this is new content appended to the end of the XML</text>';

var fileName = 'someFile.xml',
buffer = new Buffer(content+'\n'+'</xml>'),
fileSize = fs.statSync(fileName)['size'];

fs.open(fileName, 'r+', function(err, fd) {
fs.write(fd, buffer, 0, buffer.length, fileSize-7, function(err) {
if (err) throw err
console.log('done')
})
});

这将有效地加快性能。

关于xml - 如何使用node.js快速在XML文件中附加 Node 而不需要字符串比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33843552/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com