2009-11-15 28 views
0

我有一個xml文件,其中包含一組「game」節點(其中包含有關已保存遊戲的詳細信息,因爲您可以將遊戲保存在任何控制檯遊戲中)。所有這些都包含在「games」根節點中。我正在爲此xml文件實現保存功能,並希望能夠在「games」根節點內附加或覆蓋「game」節點及其子節點。使用xmllite寫入xml文件?

這怎麼能用xmllite.dll完成?

回答

0

除了在極少數情況下,您可以保證您覆蓋的字節數與在此處的字節數完全一樣多之外,您無法用「重寫」任何文本文件(包括XML文件)。你總是需要做的是編寫一個新文件(其中包含舊文件和新文件),然後重命名舊文件(例如,添加一個.bak擴展名,刪除可能已有的舊.bak左邊掛着),將新文件重命名爲舊名稱,並且僅在此時刪除舊文件。這種方法可以保證在工作過程中出現計算機或磁盤崩潰不會造成災難 - 舊數據或新數據都將在附近(最糟糕的情況是,如果崩潰在兩者之間,則需要重命名重命名)。

從舊到新文件,與MODS和地段,在xmlfile,使用記錄here的閱讀器功能和記錄here作家功能。對於一個小文件,您可以先通過閱讀器在內存中構建一個對象樹,然後通過作者將它寫出來;但這可能需要很多內存。另一種方法是增量式解析方法,例如MSDN文檔稱爲「拉編程模型」的方法。