使用xmllite写入xml文件?

时间:2009-11-15 01:56:33

标签: c++ xml xmllite

我有一个xml文件,其中包含一组“game”节点(其中包含有关已保存游戏的详细信息,因为您可以在任何控制台游戏中保存游戏)。所有这些都包含在“games”根节点中。我正在为此xml文件实现保存功能,并希望能够在“game”根节点中追加或覆盖“games”节点及其子节点。

如何使用xmllite.dll完成此操作?

1 个答案:

答案 0 :(得分:0)

你不能在物理上“重写”任何文本文件(包括XML文件),除非在极少数情况下你可以保证你完全覆盖那里的字节数。您始终需要做的是编写一个新文件(其中包含旧文件和新文件的部分),然后重命名旧文件(例如,在删除任何旧文件后重新添加.bak扩展名{可能已经闲置的{1}},将新文件重命名为旧名称,并且仅在此时删除旧文件。这种方法可以保证计算机或磁盘在工作过程中崩溃不会造成灾难 - 无论是旧数据还是新数据(如果崩溃发生在两者之间,最糟糕的情况是你需要重命名)重命名)。

要在.bak中使用旧版本的mods和批量编写新文件,请使用记录的here阅读器功能和记录的编写器功能here。对于一个小文件,您可以先通过阅读器在内存中构建一个对象树,然后通过编写器将其全部写出来;但这可能需要很多记忆。另一种方法是增量解析方法,例如MSDN docs称之为“拉式编程模型”的方法。