对象序列化为带缩进换行的XML文件

.Net中提供了序列化和反序列化功能,XmlSerializer,这是一个很强大的功能,可以通过下图概括显示。

XmlSerializer

其中有一点,默认情况下,将对象序列化为XML文件时,是不带缩进换行的。

我们需要设置XmlWriterSettings,它可以设置是否缩进换行。

XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true; //是否缩进元素
settings.OmitXmlDeclaration = true; //是否编写XML声明

using (MemoryStream ms = new MemoryStream())
{
	using (XmlWriter writer = XmlWriter.Create(ms, settings))
	{
		XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
		ns.Add("", "");
		XmlSerializer formatter = new XmlSerializer(obj.GetType());
		formatter.Serialize(writer, obj, ns);
	}
	var xml = encoding.GetString(ms.ToArray());
	return xml;
}