19

オブジェクトをファイルにシリアル化するこのコードがあります。各 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);
    }
}
4

2 に答える 2

23

の静的Create()メソッドを使用しますXmlWriter

XmlWriter.Create(filePath, settings);

NewLineOnAttributes設定でプロパティを設定できることに注意してください。

于 2011-11-23T04:09:05.187 に答える