文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

如何在C#项目中实现对象序列化XML

2023-06-06 16:38

关注

这篇文章给大家介绍如何在C#项目中实现对象序列化XML,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

首先,需要用到的是这两个命名空间(主要)

using System.Xml;using System.Xml.Serialization;

然后序列化和反序列化的方式和Json一样。(后面提供封装方法)

string result = XmlSerializeHelper.Serialize<test>(new test      {        name = "Seven",        cardId = "663927",        age = 15,        currentTime = DateTime.Now      });      Console.WriteLine(result);      test test2 = XmlSerializeHelper.DeSerialize<test>(result);

如何在C#项目中实现对象序列化XML

下面来看封装类

public class XmlSerializeHelper  {    //对象转XML    public static string ObjToXml(object obj)    {      using (MemoryStream Stream = new MemoryStream())      {        XmlSerializer xml = new XmlSerializer(obj.GetType());        xml.Serialize(Stream, obj);        Stream.Position = 0;        StreamReader sr = new StreamReader(Stream);        return sr.ReadToEnd();      }    }    public static string Serialize<T>(T obj)    {      return Serialize<T>(obj, Encoding.UTF8);    }    /// <summary>     /// 实体对象序列化成xml字符串     /// </summary>     /// <typeparam name="T"></typeparam>     /// <param name="obj"></param>     /// <returns></returns>     public static string Serialize<T>(T obj, Encoding encoding)    {      try      {        if (obj == null)        {          throw new ArgumentNullException("obj");        }        var ser = new XmlSerializer(obj.GetType());        using (var ms = new MemoryStream())        {          using (var writer = new XmlTextWriter(ms, encoding))          {            writer.Formatting = Formatting.Indented;            ser.Serialize(writer, obj);          }          var xml = encoding.GetString(ms.ToArray());          xml = xml.Replace("xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"", "");          xml = xml.Replace("xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"", "");          xml = Regex.Replace(xml, @"\s{2}", "");          xml = Regex.Replace(xml, @"\s{1}/>", "/>");          return xml;        }      }      catch (Exception ex)      {        throw ex;      }    }    /// <summary>     /// 反序列化xml字符为对象,默认为Utf-8编码     /// </summary>     /// <typeparam name="T"></typeparam>     /// <param name="xml"></param>     /// <returns></returns>     public static T DeSerialize<T>(string xml) where T : new()    {      return DeSerialize<T>(xml, Encoding.UTF8);    }    /// <summary>     /// 反序列化xml字符为对象     /// </summary>     /// <typeparam name="T"></typeparam>     /// <param name="xml"></param>     /// <param name="encoding"></param>     /// <returns></returns>     public static T DeSerialize<T>(string xml, Encoding encoding) where T : new()    {      try      {        var mySerializer = new XmlSerializer(typeof(T));        using (var ms = new MemoryStream(encoding.GetBytes(xml)))        {          using (var sr = new StreamReader(ms, encoding))          {            return (T)mySerializer.Deserialize(sr);          }        }      }      catch (Exception e)      {        return default(T);      }    }  }Class Of XmlSerializeHelper

关于如何在C#项目中实现对象序列化XML就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯