オブジェクトをファイルにシリアル化するこのコードがあります。各 XML 属性を別の行に出力しようとしています。コードは次のようになります。
public static void ToXMLFile(Object obj, string filePath)
{
XmlSerializer serializer = new XmlSerializer(obj.GetType());
XmlWriterSettings settings = new XmlWriterSettings();
settings.NewLineOnAttributes = true;
XmlTextWriter writer = new XmlTextWriter(filePath, Encoding.UTF8);
writer.Settings = settings; // Fails here. Property is read only.
using (Stream baseStream = writer.BaseStream)
{
serializer.Serialize(writer, obj);
}
}
唯一の問題は、オブジェクトのSettingsプロパティXmlTextWriterが読み取り専用であることです。
設定が機能するように、オブジェクトにSettingsプロパティを設定するにはどうすればよいですか?XmlTextWriterNewLineOnAttributes
はクラスなXmlTextWriterので、が必要だと思いました。あなたが私に尋ねると、ちょっと混乱します。 最終的な作業コードは次のとおりです。XmlWriterabstract
/// <summary>
/// Serializes an object to an XML file; writes each XML attribute to a new line.
/// </summary>
public static void ToXMLFile(Object obj, string filePath)
{
XmlSerializer serializer = new XmlSerializer(obj.GetType());
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
settings.NewLineOnAttributes = true;
using (XmlWriter writer = XmlWriter.Create(filePath, settings))
{
serializer.Serialize(writer, obj);
}
}