我有以下代码,将一个对象序列化到文件中。我想让每个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
是一个抽象类,这有点让人困惑。 最终的工作代码在这里:/// <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);
}
}
XmlTextWriter writer = XmlWriter.Create(filePath, settings) as XmlTextWriter;
。 - Robert HarveyXmlWriter.Create(...)
不会创建一个XmlTextWriter
。当你查看输出时,你会发现它返回一个XmlWellFormedWriter
。不过最好还是把它当作一个XmlWriter
来处理。 - PolityXmlTextWriter
? - Robert HarveyXmlWriter
。XmlWriter
类是一个抽象类,但你仍然可以创建它的实例。而且这样创建的实例被称为其他东西,这太奇怪了。 - Robert Harvey