即可以序列化成文本也可以序列化至文件.
using System;
using System.Text;
using System.XML;
using System.XML.Serialization;
using System.IO;
namespace CS.Common.Utility

...{

/**//// <summary>
/// 序列化與反序列化
/// FileName : Serializer.cs
/// Verion : 0.10
/// Author : zhouyu http://max.cszi.com
/// Update : 2007-10-22
/// Description : 序列化與反序列化,主要用於將對象裡的數據序列化成XML數據,用於存於文本或是數據庫
/// Thanks : 小浩http://cs.alIEnwave.cn )
/// </summary>
public class Serializer


...{


/**//// <summary>

/// 將文件反序列化成對象

/// 使用:BlogSettingInfo info = (BlogSettingInfo) Serializer.XmlDeserializerFormFile(typeof(BlogSettingInfo), @"H:CSBlog.XML");

/// </summary>

/// <param name="type">對象類型</param>

/// <param name="path">文件路徑</param>

/// <returns></returns>

public static object XMLDeserializerFormFile(Type type, string path)


...{

return new XmlSerializer(type).Deserialize(new XMLTextReader(path));

}




/**//// <summary>

/// 將字符串內容反序列化成對象

/// 使用:BlogSettingInfo info = (BlogSettingInfo)Serializer.XMLDeserializerFormText(typeof(BlogSettingInfo),config);

/// </summary>

/// <param name="type">對象類型</param>

/// <param name="serializeText">被序列化的文本</param>

/// <returns></returns>

public static object XMLDeserializerFormText(Type type, string serializeText)


...{

using (StringReader reader = new StringReader(serializeText))


...{

return new XMLSerializer(type).Deserialize(reader);

}

}




/**//// <summary>

/// 將目標對象序列化成XML到文件中

/// </summary>

/// <param name="target"></param>

/// <param name="path"></param>

public static void XMLSerializerToFile(object target, string path)


...{

//XmlTextWriter writer = new XMLTextWriter(path, Encoding.UTF8);

StreamWriter writer = new StreamWriter(path);

new XMLSerializer(target.GetType()).Serialize((StreamWriter)writer, target);

writer.Close();

}




/**//// <summary>

/// 將目標對象序列化成完整的XML文檔

/// </summary>

/// <param name="target"></param>

/// <returns></returns>

public static string XmlSerializerToXML(object target)


...{

return XMLSerializerToText(target, false);

}




/**//// <summary>

/// 將目標對象序列化成XML文檔內容(去除聲明屬性)

/// </summary>

/// <param name="target"></param>

/// <returns></returns>

public static string XMLSerializerToText(object target)


...{

return XMLSerializerToText(target, true);

}




/**//// <summary>

/// 將目標對象序列化成XML文檔

/// </summary>

/// <param name="target"></param>

/// <param name="isText">是否去除聲明屬性</param>

/// <returns></returns>

private static string XMLSerializerToText(object target, bool isText)


...{

StringWriter writer = new StringWriter();

new XMLSerializer(target.GetType()).Serialize((TextWriter)writer, target);

StringBuilder sb = writer.GetStringBuilder();

writer.Close();

if (isText)


...{

sb.Replace("<?XML version="1.0" encoding="utf-16"?> ", "");

sb.Replace(" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"", "");

}

else

...{

sb.Replace("utf-16", "utf-8");

}

return sb.ToString();

}


}



}