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私はファイルメソッドを1行ずつ解析して変更を加えますが、もっとエレガントなものを望んでいました。 ReadXmlを使用してファイルをロードする最初の方法は、ファイルの変更は問題ありませんが、ファイルを排他的に開くためのオプションはありません。何か不足していますか?
素晴らしい!私はそれが私が行方不明だった単純なものでなければならないことを知っていた! – BDW
@Walt W:新しいデータを書き込んだ後にsetlengthを呼び出すこともできます。これはより効果的です(長い場合は効果がなく、短い場合はhteの長さを1回だけリセットします書く...) –
@Reed Copsey:これは本当です。 –