XmlTextWriterを使用できます。
書き込み用にファイルを開き、最後の要素の先頭に戻って、必要な新しい要素を XmlTextWriter で追加するだけです。ファイルを閉じるには、終了要素の生のテキストを書き込んでドキュメントを完成させれば完了です。
これは簡単で汚い例です。
次のような XML から始めます。
<?xml version="1.0" encoding="utf-8"?>
<DocumentElement>
<FirstElem/>
</DocumentElement>
それを開いて、次のような要素を追加できます。
using (FileStream f = new FileStream(@"D:\a.xml", FileMode.OpenOrCreate, FileAccess.Write))
{
f.Seek(-("</DocumentElement>\n".Length), SeekOrigin.End);
using (XmlTextWriter x = new XmlTextWriter(f, Encoding.UTF8))
{
x.WriteStartElement("Another");
x.WriteAttributeString("attr", "value");
x.WriteEndElement();
// Close the file with a new terminating end-element
x.WriteRaw("\r\n</DocumentElement>\r\n");
}
}
結果は次のとおりです。
<?xml version="1.0" encoding="utf-8"?>
<DocumentElement>
<FirstElem/>
<Another attr="value" />
</DocumentElement>
インデントなどは完全ではないかもしれませんが、有効な XML です。これは、xml を生のテキストとしてファイルに書き込む場合に行うこととまったく同じですが、XML ライターを利用して書式設定を行うこともできます。
いくつかのコメントにも同意します。サイズを最小化するスキーマを xml に使用することは非常に有益です。インデントをオフにします。できるだけ短い要素名と属性名を使用してください。また、リーフ要素で作業している場合は、データを cdata ではなく属性として保存すると、容量が節約されます (<element>data</element>
よりもコストがかかり、元のサイズのほぼ半分に<element val="data"/>
さらに圧縮できます)。<e v="data"/>