同じファイルに追加する場合は、同じ TextWriter を使用し、完了したら閉じます。
XmlSerializer xmlSel = new XmlSerializer(typeof(Foo));
TextWriter txtStream = new StreamWriter("xmlStreamFile.xml");
for (int i = 1; i <= 3; i++)
{
Foo foo = new Foo(i * 100);
xmlSel.Serialize(txtStream, foo);
Console.WriteLine("Serialize done #" + i);
txtStream.Flush();
}
txtStream.Close();
txtStream.Dispose();
このサンプルFooは単純な構造体ですが、クラスでも機能します。
編集: WinFormsを使用していると仮定すると、クラス自体のXmlSerializerおよびStreamWriterメンバーを持つことができます:
class Form1 : Form
{
private XmlSerializer xmlSel = null;
TextWriter txtStream = null;
//....
}
次に、ボタン クリック メソッドで、null の場合は一度初期化し、必要なものをシリアル化します。
if (xmlSel == null)
{
xmlSel = new XmlSerializer(typeof(Foo));
txtStream = new StreamWriter("xmlStreamFile.xml");
}
xmlSel.Serialize(txtStream, foo);
txtStream.Flush();
最後に、フォームの close イベントで、ライターを閉じて破棄します。
txtStream.Close();
txtStream.Dispose();