建立一个对象,将对象序列化成为XMl,代码如下:public abstract class Sequence<T> where T : class { private string _path = string.Empty; public string Path { get { return _path; } set { _path = value; } } /// <summary> /// 序列化 /// </summary> private void Serialize(T t) { XmlSerializer s = new XmlSerializer(t.GetType()); TextWriter w = new StreamWriter(_path); s.Serialize(w, t); w.Close(); } private T Deserialize() { T t = null; if (this.isExist()) { TextReader r = new StreamReader(_path); XmlSerializer s = new XmlSerializer(typeof(T)); object obj = (T)s.Deserialize(r); if (obj is T) t = obj as T; r.Close(); } return t; } private bool isExist() { return File.Exists(_path); } public abstract void Clear(); public virtual void Save(T t) { this.Serialize(t); } public virtual T Read() { return this.Deserialize(); } }
现成的对象和xml string的转换代码: public static string XMLSerialize<T>(T entity) { StringBuilder buffer = new StringBuilder(); XmlSerializer serializer = new XmlSerializer(typeof(T)); using (TextWriter writer = new StringWriter(buffer)) { serializer.Serialize(writer, entity); } return buffer.ToString(); } public static T DeXMLSerialize<T>(string xmlString) { T cloneObject = default(T); StringBuilder buffer = new StringBuilder(); buffer.Append(xmlString); XmlSerializer serializer = new XmlSerializer(typeof(T));
using (TextReader reader = new StringReader(buffer.ToString())) { Object obj = serializer.Deserialize(reader); cloneObject = (T)obj; } return cloneObject; }
{
private string _path = string.Empty;
public string Path
{
get { return _path; }
set { _path = value; }
}
/// <summary>
/// 序列化
/// </summary>
private void Serialize(T t)
{
XmlSerializer s = new XmlSerializer(t.GetType());
TextWriter w = new StreamWriter(_path);
s.Serialize(w, t);
w.Close(); }
private T Deserialize()
{
T t = null;
if (this.isExist())
{
TextReader r = new StreamReader(_path);
XmlSerializer s = new XmlSerializer(typeof(T));
object obj = (T)s.Deserialize(r);
if (obj is T)
t = obj as T;
r.Close();
}
return t; }
private bool isExist()
{
return File.Exists(_path);
}
public abstract void Clear();
public virtual void Save(T t)
{
this.Serialize(t);
}
public virtual T Read()
{
return this.Deserialize();
}
}
现成的对象和xml string的转换代码: public static string XMLSerialize<T>(T entity)
{
StringBuilder buffer = new StringBuilder();
XmlSerializer serializer = new XmlSerializer(typeof(T));
using (TextWriter writer = new StringWriter(buffer))
{
serializer.Serialize(writer, entity);
}
return buffer.ToString(); }
public static T DeXMLSerialize<T>(string xmlString)
{
T cloneObject = default(T);
StringBuilder buffer = new StringBuilder();
buffer.Append(xmlString);
XmlSerializer serializer = new XmlSerializer(typeof(T));
using (TextReader reader = new StringReader(buffer.ToString()))
{
Object obj = serializer.Deserialize(reader);
cloneObject = (T)obj;
}
return cloneObject;
}