如何在XmlTextWriter中设置Settings属性,以便我可以在自己的行上编写每个XML属性?
我有一些代码,它将一个对象序列化为一个文件。 我试图让每个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
类。 如果你问我,有点困惑。 最终的工作代码在这里:
/// /// Serializes an object to an XML file; writes each XML attribute to a new line. /// 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); } }
使用XmlWriter
的静态Create()
方法。
XmlWriter.Create(filePath, settings);
请注意,您可以在设置中设置NewLineOnAttributes
属性。
我知道问题是旧的,无论如何,实际上可以为XMLTextWriter
设置缩进。 与XMLwriter
不同,您不必通过设置; 你应该使用Formatting
属性:
XmlTextWriter writer = new XmlTextWriter(filePath, Encoding.UTF8); w.Formatting = Formatting.Indented;
请参阅https://msdn.microsoft.com/en-us/library/system.xml.xmltextwriter.formatting(v=vs.110).aspx