如何使用node.js fast在XML文件中附加节点,而无需进行字符串比较
这里提出了一个解决方案: 我把答案复制到这里以供参考如何使用node.js fast在XML文件中附加节点,而无需进行字符串比较,xml,node.js,Xml,Node.js,这里提出了一个解决方案: 我把答案复制到这里以供参考 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.wr
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!');
});
});
var fs=require('fs');
var-xmlFile;
fs.readFile('someFile.xml',函数(err,data){
如果(错误)抛出错误;
xmlFile=数据;
var newXmlFile=xmlFile.replace(“”,)+“内容”+“”;
writeFile('someFile.xml',newXmlFile,function(err){
如果(错误)抛出错误;
console.log('Done!');
});
});
但是,上面的解决方案需要字符串匹配
'
字符串。如果我们知道文件的最后一行总是'
,有没有办法通过消除字符串比较的需要来加速代码?还有其他更有效的方法来完成此任务吗?您不需要阅读文件的全部内容,也不需要使用替换来完成此任务。您可以从固定位置覆盖内容-此处fileSize-7
,长度'
+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')
})
});
var fs=require('fs');
//要插入的内容
var content='这是附加到XML末尾的新内容';
var fileName='someFile.xml',
缓冲区=新缓冲区(内容+'\n'+'),
fileSize=fs.statSync(文件名)['size'];
打开(文件名'r+',函数(err,fd){
写入(fd,buffer,0,buffer.length,fileSize-7,函数(err){
如果(错误)抛出错误
console.log('done')
})
});
这将有效地提高性能