2
XmlSerializer.Serialize Methodには、TextWriter
とXmlWriter
を受け入れるオーバーロードがあります。シリアル化(TextWriter、オブジェクト)とシリアル化(XmlWriter、オブジェクト)
私の質問は、以下の2つの過負荷の実用的な違いは何ですか? (TextWriter
で)
例1(list
がList<MyObjectModel>
です):
XmlSerializer serializer = new XmlSerializer(typeof(MyObjectModel));
using (TextWriter writer = new StreamWriter(savePath))
{
serializer.Serialize(writer, list);
}
例2(XmlWriter
で):
XmlSerializer serializer = new XmlSerializer(typeof(MyObjectModel));
using (XmlWriter writer = XmlWriter.Create(savePath))
{
serializer.Serialize(writer, list);
}
これまでのところ私は気づいたこと:
1)TextWriter
は自動的にインデントを実行するようです。
2)両方のデフォルトのエンコーディングはUTF-8です。
'TextWriter'は抽象クラスなので、カスタムビヘイビアが必要な場合は、' XmlWriter.Create'を提供するか、独自のTextWriter実装を使用することができます。 – Abbath
'XmlWriter'サブクラスは、文字列やストリームを他のものに書き出します。たとえば、['XContainer.CreateWriter()'](https://msdn.microsoft.com/en-us/library/system.xml.linq.xcontainer.createerer%28v=vs.110%29.aspx)では、 'XmlWriter'を使用して、LINQ-to-XML文書または要素に直接シリアル化することができます。同様に、古い 'XmlDocument' APIで[' XPathNavigator.AppendChild() '](https://msdn.microsoft.com/en-us/library/ms163341%28v=vs.110%29.aspx)を使うことができます。 – dbc
@dbc:ありがとう。違いをよりよく理解するのに役立ちました。 –