如何附加到某个文件行?

时间:2014-09-17 09:07:28

标签: javascript xml node.js

我想要附加到文件,但我想在</xml>标记结束之前开始追加。出现。我怎么能这样做?

var fs = require("fs");
fs.appendFile('somefile.xml', 'Content')

我有这样的但它插入了内容&#39;在文件的末尾,我希望它在具体的&#39;关键字&#39;

之前的特定行

2 个答案:

答案 0 :(得分:1)

这可能不是最简单的选择,但至少应该完成工作。 Haven未对其进行测试,因此可能需要进行一些更改。它会读取文件,完成后会创建新文件,方法是删除</xml>标记,添加内容,然后再添加</xml>标记。

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!');
  }); 
});

答案 1 :(得分:1)

一种好方法是将文件拆分为包装文件和正文文件。包装器只包含最外层标记和对body文件的实体引用。然后,您的程序可以附加到正文文件的末尾,而任何以XML格式读取文件的人都应该读取包装文件。包装文件看起来像这样:

<!DOCTYPE xml [
<!ENTITY e SYSTEM "body.xml">
]>
<xml>&e;</xml>

使用&#34; xml&#34;顺便说一下,作为元素名称是不好的做法。所有名称均以&#34; xml&#34;开头。保留供W3C将来使用。

如果您在浏览器中阅读XML,则此方法可能无效。我认为有些浏览器&#39; XML解析器不支持外部实体。