Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用node.js fast在XML文件中附加节点,而无需进行字符串比较_Xml_Node.js - Fatal编程技术网

如何使用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')
})  
});
这将有效地提高性能