对象,对象集合的简单Xml序列化与反序列化(非原创)

C#版本: C# 3.0 开发环境: VS 2008

      using System;
      using System.Collections.Generic;
      using System.Linq;
      using System.Text;
      using System.IO;
      using System.Xml;
      using System.Xml.Serialization;

      namespace ConsoleApplication2
      {
          public class SimpleSerializer
          {
              /// <summary>
              /// 序列化对象
              /// </summary>
              /// <typeparam name="T">对象类型</typeparam>
              /// <param name="t">对象</param>
              /// <returns></returns>
              public static string Serialize<T>(T t)
              {
                  using (StringWriter sw = new StringWriter())
                  {
                      XmlSerializer xz = new XmlSerializer(t.GetType());
                      xz.Serialize(sw, t);
                      return sw.ToString();
                  }
              }

              /// <summary>
              /// 反序列化为对象
              /// </summary>
              /// <param name="type">对象类型</param>
              /// <param name="s">对象序列化后的Xml字符串</param>
              /// <returns></returns>
              public static object Deserialize(Type type, string s)
              {
                  using (StringReader sr = new StringReader(s))
                  {
                      XmlSerializer xz = new XmlSerializer(type);
                      return xz.Deserialize(sr);
                  }
              }
          }
      }
      定义一个用于测试的实体类: UserInfo 

      using System;
      using System.Collections.Generic;
      using System.Linq;
      using System.Text;
      using System.Xml.Serialization;

     namespace ConsoleApplication2
    {
    [Serializable]
    public class UserInfo
    {
        private int m_UserId;

        [XmlElement("userId")]
        public int UserId
        {
            get { return m_UserId; }
            set { m_UserId = value; }
        }
        private string m_UserName;

        [XmlElement("userName")]
        public string UserName
        {
            get { return m_UserName; }
            set { m_UserName = value; }
        }
     }
   }
      编写测试子程序:

      using System;
      using System.Collections.Generic;

      namespace ConsoleApplication2
      {
          class Program
          {
              static void Main(string[] args)
              {
                  Program.TestOne();
                  Console.WriteLine(string.Empty);

                  Program.TestTwo();
                  Console.WriteLine(string.Empty);

                  Program.TestThree();
                  Console.WriteLine(string.Empty);

                  Program.TestFour();
              }
              public static void TestOne()
              {
                  UserInfo info = new UserInfo() { UserId = 1, UserName = "Guozhijian" };
                  Console.WriteLine(SimpleSerializer.Serialize<UserInfo>(info));
              }
              public static void TestTwo()
              {
                  List<UserInfo> list = new List<UserInfo>();
                  list.Add(new UserInfo() { UserId = 1, UserName = "Guozhijian" });
                  list.Add(new UserInfo() { UserId = 2, UserName = "Zhenglanzhen" });
                  Console.WriteLine(SimpleSerializer.Serialize<List<UserInfo>>(list));
              }
              public static void TestThree()
              {
                  string s = SimpleSerializer.Serialize<UserInfo>(new UserInfo() { UserId = 1, UserName = "Guozhijian" });
                  UserInfo info = SimpleSerializer.Deserialize(typeof(UserInfo), s) as UserInfo;
                  Console.WriteLine(info.UserId.ToString() + ", " + info.UserName);
              }
              public static void TestFour()
              {
                  List<UserInfo> list = new List<UserInfo>();
                  list.Add(new UserInfo() { UserId = 1, UserName = "Guozhijian" });
                  list.Add(new UserInfo() { UserId = 2, UserName = "Zhenglanzhen" });
                  string s = SimpleSerializer.Serialize<List<UserInfo>>(list);
                  List<UserInfo> newList = SimpleSerializer.Deserialize(typeof(List<UserInfo>), s) as List<UserInfo>;
                  foreach (var info in newList)
                  {
                      Console.WriteLine(info.UserId.ToString() + ", " + info.UserName);
                  }
              }
          }
      }
      输出结果为: 
      C:\WINDOWS\system32\cmd.exe   
      <?xml version="1.0" encoding="utf-16"?> 
      <UserInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http: 
      //www.w3.org/2001/XMLSchema"> 
        <userId>1</userId> 
        <userName>Guozhijian</userName> 
      </UserInfo>       

      <?xml version="1.0" encoding="utf-16"?> 
      <ArrayOfUserInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd 
      ="http://www.w3.org/2001/XMLSchema"> 
        <UserInfo> 
          <userId>1</userId> 
          <userName>Guozhijian</userName> 
        </UserInfo> 
        <UserInfo> 
          <userId>2</userId> 
          <userName>Zhenglanzhen</userName> 
        </UserInfo> 
      </ArrayOfUserInfo>

原文地址:https://www.cnblogs.com/GeneralXU/p/1438778.html