将对象xml序列化和反序列化

//将一个对象按XML序列化的方式写入到一个文件,使用的默认的UTF8编码格式

//o为要序列化的对象

//path保存文件的路径

public static object  _lockObj=new object();

public static void XmlSerializeToFile(object o,string path)

{

   XmlSerializeToFile(o,path,Encoding.UTF8);

}

//encoding 编码方式

//path 文件路径

public static void XmlSerializeToFile(object o,string path,Encoding encoding)

{

  if(string.IsNullOrEmpty(path))

    throw new ArgumentNullException("path");

  Monitor.Enter(_lockObj);//添加排他锁,解决并发写入问题

  try

  {

     using(FileStream file=new FileStream(path,FileMode.Create,FileAccess.Write))

     {

         XmlSerializeInternal(file,o,encoding);

     }

  }

  catch(Exception)

  {

     throw;

  }

  finally

  {

     Monitor.Exit(_lockObj);

  }

}

//读入一个文件,并按XML的方式反序列化对象

public static T XmlDeserializeFromFile<T>(string path,Encoding encoding)

{

  if(string.IsNullOrEmpty(path))

  throw new ArgumentNullException("path");

  if(encoding == null)

  throw new ArgumentNullException("encoding");

  string xml=File.ReadAllText(path,encoding);

  return XmlDeserialize<T>(xml,encoding);

}

pubic static T XmlDeserializeFromFile<T>(string path)

{

  return XmlDeserializeFromFile<T>(path,Encoding.UTF8);

}

转载于:https://www.cnblogs.com/huodige/p/10654872.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值