2009-11-15 47 views
0

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

这怎么能用xmllite.dll完成?

回答

0

除了在极少数情况下,您可以保证您覆盖的字节数与在此处的字节数完全一样多之外,您无法用“重写”任何文本文件(包括XML文件)。你总是需要做的是编写一个新文件(其中包含旧文件和新文件),然后重命名旧文件(例如,添加一个.bak扩展名,删除可能已有的旧.bak左边挂着),将新文件重命名为旧名称,并且仅在此时删除旧文件。这种方法可以保证在工作过程中出现计算机或磁盘崩溃不会造成灾难 - 旧数据或新数据都将在附近(最糟糕的情况是,如果崩溃在两者之间,则需要重命名重命名)。

从旧到新文件,与MODS和地段,在xmlfile,使用记录here的阅读器功能和记录here作家功能。对于一个小文件,您可以先通过阅读器在内存中构建一个对象树,然后通过作者将它写出来;但这可能需要很多内存。另一种方法是增量式解析方法,例如MSDN文档称为“拉编程模型”的方法。