我需要專門打開一個XML文件,進行修改並保存。獨家打開/修改XML文件?
我可以很容易地打開它並進行修改,如下所示:
DataSet ds = new DataSet();
ds.ReadXml(filename);
DataTable table = ds.Tables[0];
DataRow[] rows = table.Select("Inventory== 1");
DataRow row = rows[0];
row["Inventory"] = "2";
ds.WriteXml(filename);
這一切的偉大工程,但它不鎖文件。我絕對需要鎖定文件。
所以我與流試了一下:
FileStream stream = File.Open(filename, FileMode.Open, FileAccess.ReadWrite, FileShare.None);
DataSet ds = new DataSet();
ds.ReadXml(stream);
DataTable table = ds.Tables[0];
DataRow[] rows = table.Select("Inventory== 1");
DataRow row = rows[0];
row["Inventory"] = "2";
ds.WriteXml(stream);
stream.Close();
這完全打開該文件,但是當它保存,它追加到XML的時間結束時,它不會覆蓋它,所以我最終的東西,如:
<Widgets>
<Widget Code="5" Number="10" Inventory="1" />
<Widget Code="6" Number="11" Inventory="15" />
<Widget Code="7" Number="12" Inventory="22" />
</Widgets>
<Widgets>
<Widget Code="5" Number="10" Inventory="2" />
<Widget Code="6" Number="11" Inventory="15" />
<Widget Code="7" Number="12" Inventory="22" />
</Widgets>
我要的是:
<Widgets>
<Widget Code="5" Number="10" Inventory="2" />
<Widget Code="6" Number="11" Inventory="15" />
<Widget Code="7" Number="12" Inventory="22" />
</Widgets>
我知道我可以打開文件和u se File方法逐行解析它並進行更改......但我希望能有更優雅的東西。第一種方法 - 使用ReadXml加載文件 - 文件修改很好,但它沒有任何專門打開文件的選項。我錯過了什麼嗎?
太棒了!我知道它必須是簡單的,我失蹤了! – BDW 2009-09-01 17:28:21
@Walt W:您也可以在寫入新數據之後調用setlength,這可能更有效(因爲如果它更長,它不會產生效果,並且如果更短,則只會重置一次長度,而不是您寫...) – 2009-09-01 17:40:16
@Reed Copsey:這是真的。 – 2009-09-01 17:41:51