• 对象,对象集合的简单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>

  • 相关阅读:
    2017 年终总结 —— 在路上
    尝试造了个工具类库,名为 Diana
    走近 Python (类比 JS)
    Node.js 异步异闻录
    使用 Node.js 搭建一个 API 网关
    不就是语法和长难句吗—笔记总结Day4
    不就是语法和长难句吗—笔记总结Day3
    不就是语法和长难句吗—笔记总结Day2
    不就是语法和长难句吗—笔记总结Day1
    Kali Day1
  • 原文地址:https://www.cnblogs.com/GeneralXU/p/1438778.html
Copyright © 2020-2023  润新知