Xml序列化
时间:2010-10-04 来源:张静静
1.XmlSerializer序列化
实例:
FileStream fs = null;
try
{
fs = new FileStream(filename, FileMode.Create, FileAccess.Write, FileShare.ReadWrite);
XmlSerializer serializer = new XmlSerializer(obj.GetType());
serializer.Serialize(fs, obj);
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (fs != null)
fs.Close();
}
2.XmlSerializer反序列化
FileStream fs = null;
try
{
// open the stream...
fs = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
XmlSerializer serializer = new XmlSerializer(type);
return serializer.Deserialize(fs);
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (fs != null)
fs.Close();
}
3.序列化对象操作
public IConfigInfo LoadConfig(string configFilePath, IConfigInfo configinfo)
{
IConfigInfo m_configinfo =(IConfigInfo)SerializationManage.Load(configinfo.GetType(), configFilePath);
return m_configinfo;
}
从以上方中可以看到,返回对象为共有的接口类型( IConfigInfo )。
方法参数分别为, configFilePath指定文件路径。 Configinfo指定要返回的对象类型。
在方法内部,使用刚刚创建的SerializationManage类中的Load方法,将参数传入就可以得到IConfigInfo对象。
public bool SaveConfig(string configFilePath, IConfigInfo configinfo)
{
return SerializationManage.Save(configinfo, configFilePath);
} 以上方法完成了对象保存存为XML文件的功能,其中configFilePath为XML文件的路径, configinfo则是要保存的对象。
SerializationManage中的Save()则是用来完成俱体的保存功能的。
以上两个方法只是完成了读与写。在B/S项目中,访问对象的请求会有很多,所以我们需要将对象Lock。俱体实现时,会用到单列模式。代码:
private object lockobject = new object();
private static ConfigFileManager instance = null; public static ConfigFileManager Instance
{
get
{
if (instance == null)
{
lock (lockobject)
{
instance = new ConfigFileManager();
}
}
return instance;
}
}
读取:
ConfigFileManager.Instance.LoadConfig(path, 实体) 保存:
ConfigFileManager.Instance.SaveConfig(path, 实体)
实例:
FileStream fs = null;
try
{
fs = new FileStream(filename, FileMode.Create, FileAccess.Write, FileShare.ReadWrite);
XmlSerializer serializer = new XmlSerializer(obj.GetType());
serializer.Serialize(fs, obj);
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (fs != null)
fs.Close();
}
2.XmlSerializer反序列化
FileStream fs = null;
try
{
// open the stream...
fs = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
XmlSerializer serializer = new XmlSerializer(type);
return serializer.Deserialize(fs);
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (fs != null)
fs.Close();
}
3.序列化对象操作
public IConfigInfo LoadConfig(string configFilePath, IConfigInfo configinfo)
{
IConfigInfo m_configinfo =(IConfigInfo)SerializationManage.Load(configinfo.GetType(), configFilePath);
return m_configinfo;
}
从以上方中可以看到,返回对象为共有的接口类型( IConfigInfo )。
方法参数分别为, configFilePath指定文件路径。 Configinfo指定要返回的对象类型。
在方法内部,使用刚刚创建的SerializationManage类中的Load方法,将参数传入就可以得到IConfigInfo对象。
public bool SaveConfig(string configFilePath, IConfigInfo configinfo)
{
return SerializationManage.Save(configinfo, configFilePath);
} 以上方法完成了对象保存存为XML文件的功能,其中configFilePath为XML文件的路径, configinfo则是要保存的对象。
SerializationManage中的Save()则是用来完成俱体的保存功能的。
以上两个方法只是完成了读与写。在B/S项目中,访问对象的请求会有很多,所以我们需要将对象Lock。俱体实现时,会用到单列模式。代码:
private object lockobject = new object();
private static ConfigFileManager instance = null; public static ConfigFileManager Instance
{
get
{
if (instance == null)
{
lock (lockobject)
{
instance = new ConfigFileManager();
}
}
return instance;
}
}
读取:
ConfigFileManager.Instance.LoadConfig(path, 实体) 保存:
ConfigFileManager.Instance.SaveConfig(path, 实体)
相关阅读 更多 +