C# 对象序列化与反序列化为xml

1、xml序列化
        public static string SerializeXml(object data)
        {
            using (StringWriter sw = new StringWriter())
            {
                XmlSerializer xz = new XmlSerializer(data.GetType());
                xz.Serialize(sw, data);
                return sw.ToString();
            }
        }
        public static void SerializeToXml(object o, string xmlFileName)
        {

            var type = o.GetType(); if (o == null) { return; }
            string lastDirectoryPath = Path.GetDirectoryName(xmlFileName);
            if (!Directory.Exists(lastDirectoryPath))
            {
                Directory.CreateDirectory(lastDirectoryPath);
            }
            //序列化对象
            XmlSerializer serializer = new XmlSerializer(type);
            using (XmlTextWriter xtw = new XmlTextWriter(xmlFileName, Encoding.UTF8))
            {
                //用XmlTextWriter 创建一个XML文件
                xtw.Formatting = Formatting.Indented;
                //可实现换行显示
                serializer.Serialize(xtw, o);
            }
        }
        public static MemoryStream SerializeXml(object data, Encoding encoding)
        {
            MemoryStream ms = new MemoryStream();
            StreamWriter sw = new StreamWriter(ms, encoding);
            XmlSerializer xz = new XmlSerializer(data.GetType());
            xz.Serialize(sw, data);
            return ms;
        }

2、xml反序列化

        public static T DeserializeXml<T>(string xmlFileName)
        {
            FileStream fs = File.Open(xmlFileName, FileMode.Open);
            using (StreamReader sr = new StreamReader(fs, Encoding.UTF8))
            {
                XmlSerializer xz = new XmlSerializer(typeof(T));
                T dept = (T)xz.Deserialize(sr);
                return dept;
            }
        }

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值