【发布时间】:2012-01-04 10:45:49
【问题描述】:
我有这段代码,它将一个对象序列化为一个文件。我试图让每个 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);
}
}
唯一的问题是,XmlTextWriter 对象的Settings 属性是只读的。
如何在XmlTextWriter 对象上设置Settings 属性,以便NewLineOnAttributes 设置有效?
好吧,我想我需要一个XmlTextWriter,因为XmlWriter 是一个abstract 类。如果你问我,有点令人困惑。 最终的工作代码在这里:
/// <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);
}
}
【问题讨论】:
标签: c# xml serialization xmlwriter xmltextwriter