我有一个 xml 文件,其中包含一组“ game
”节点(其中包含有关已保存游戏的详细信息,因为您可以将游戏保存在任何控制台游戏上)。所有这些都包含在一个“ games
”根节点中。我正在为这个 xml 文件实现保存功能,并希望能够在“”根节点中附加或覆盖“ game
”节点及其子games
节点。
如何做到这一点xmllite.dll
?
您不能物理上“就地重写”任何文本文件(包括 XML 文件),除非在极少数情况下您可以保证覆盖的字节数与那里的字节数完全相同。您始终需要做的是编写一个新文件(其中包含旧文件的部分和新的部分),然后重命名旧文件(例如.bak
,在删除任何.bak
可能已挂起的旧文件后为其添加扩展名左右),将新文件重命名为旧名称,并且仅在此时删除旧文件。这种方法可以确保在您的工作过程中发生计算机或磁盘崩溃不会是一场灾难——旧数据或新数据都会存在(最坏的情况是,如果崩溃只是在两者之间,您将需要重命名)重命名)。
要编写一个新文件,其中包含旧文件的 mods 和很多,请使用此处xmlfile
记录的阅读器功能和此处记录的编写器功能。对于小文件,可以先通过 reader 在内存中构建对象树,然后通过 writer 将其全部写入;但这可能会占用大量内存。另一种方法是增量解析方法,例如 MSDN 文档称为“拉式编程模型”的方法。