XML之序列化C#实体类,DataTable,List

1.

static void Main(string[] args)
        {
            #region 实体类
            Request patientIn = new Request();
            patientIn.System = "HIS";
            patientIn.SecurityCode = "HIS5";

            PatientBasicInfo basicInfo = new PatientBasicInfo();
            basicInfo.PatientNo = "1234";
            basicInfo.PatientName = "测试";
            basicInfo.Phoneticize = "";
            basicInfo.Sex = "1";
            basicInfo.Birth = "";
            basicInfo.BirthPlace = "";
            basicInfo.Country = "";
            basicInfo.Nation = "";
            basicInfo.IDNumber = "";
            basicInfo.SecurityNo = "";
            basicInfo.Workunits = "";
            basicInfo.Address = "";
            basicInfo.ZIPCode = "";
            basicInfo.Phone = "";
            basicInfo.ContactShip = "";
            basicInfo.ContactPersonPhone = "";
            basicInfo.ContactPersonAdd = "";
            basicInfo.ContactPerson = "";
            basicInfo.ChangeType = "";
            basicInfo.CardNo = "";
            basicInfo.OperationCode = "";
            basicInfo.OperationName = "";
            basicInfo.OperationTime = "";

            patientIn.PatientInfo = basicInfo;

            //序列化为xml
            string strxml = Class_to_xml.XmlSerialize<Request>(patientIn);
            //Console.Write(strxml);

            //反序列化为实体类
            Request r = Class_to_xml.DESerializer<Request>(strxml);
            //Console.Write(r);
             #endregion

             #region DataTable
             //将DataTable转换成XML
             DataTable dt = new DataTable("MyTable");
             //添加列
             dt.Columns.Add("Id", typeof(int));
             dt.Columns.Add("Name", typeof(string));
             dt.Columns.Add("Sex", typeof(char));
             //添加行
             dt.Rows.Add(1, "小明", '1');
             dt.Rows.Add(2, "小红", '2');
             dt.Rows.Add(3, "小王", '2');
             dt.Rows.Add(4, "测试", '2');
             //序列化为xml,将DataTable转换成XML格式的字符串
             string strXML = Class_to_xml.XmlSerialize<DataTable>(dt);
             //Console.Write(strXML);

             //反序列化为DataTable
             DataTable dtNew = Class_to_xml.DESerializer<DataTable>(strXML);
             Console.Write(strXML);
             #endregion

             #region 列表集合
             //测试集合
             List<Student> list = new List<Student>()
            {
                    new Student(){Id=1,Name="小红",Sex='2',Age=20},
                    new Student(){Id=2,Name="小明",Sex='1',Age=22},
                    new Student(){Id=3,Name="小王",Sex='1',Age=19},
                    new Student(){Id=4,Name="测试",Sex='2',Age=23}
            };
             //序列化为xml
             string strXML = Class_to_xml.XmlSerialize<List<Student>>(list);
             Console.Write(strxml);

             //反序列化为list
             List<Student> listStu = Class_to_xml.DESerializer<List<Student>>(strXML);
             foreach (var item in listStu)
             {
                 Console.WriteLine(item.Age);
             }
             #endregion
            
             Console.ReadKey();
        }

2.

public class Class_to_xml
    {
        //实体类转换XML,xml序列化
        public static string XmlSerialize<T>(T obj)
        {
            using (StringWriter sw = new StringWriter())
            {
                Type t = obj.GetType();
                XmlSerializer serializer = new XmlSerializer(obj.GetType());
                serializer.Serialize(sw, obj);
                sw.Close();
                return sw.ToString();
            }
        }
        //xml反序列化
        public static T DESerializer<T>(string strXML) where T : class
        {
            try
            {
                using (StringReader sr = new StringReader(strXML))
                {
                    XmlSerializer serializer = new XmlSerializer(typeof(T));
                    return serializer.Deserialize(sr) as T;
                }
            }
            catch (Exception ex)
            {
                return null;
            }
        }


    }
Class_to_xml

3.

 [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
    [System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = false)]
    public class Request
    {

        public string System { get; set; }
        public string SecurityCode { get; set; }
        public PatientBasicInfo PatientInfo { get; set; }
    }

    /// <remarks/>
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
    public partial class PatientBasicInfo
    {
        public string PatientNo { get; set; }
        public string PatientName { get; set; }
        public string Phoneticize { get; set; }
        public string Sex { get; set; }
        public string Birth { get; set; }
        public string BirthPlace { get; set; }
        public string Country { get; set; }
        public string Nation { get; set; }
        public string IDNumber { get; set; }
        public string SecurityNo { get; set; }
        public string Workunits { get; set; }
        public string Address { get; set; }
        public string ZIPCode { get; set; }
        public string Phone { get; set; }
        public string ContactPerson { get; set; }
        public string ContactShip { get; set; }
        public string ContactPersonAdd { get; set; }
        public string ContactPersonPhone { get; set; }
        public string OperationCode { get; set; }
        public string OperationName { get; set; }
        public string OperationTime { get; set; }
        public string CardNo { get; set; }
        public string ChangeType { get; set; }

    }
    /// <summary>
    /// 测试类
    /// </summary>
    public class Student
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public char Sex { get; set; }
        public int Age { get; set; }
    }
实体类

 4.XML

<?xml version="1.0" encoding="utf-16"?>
<Request xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <System>HIS</System>
  <SecurityCode>HIS5</SecurityCode>
  <PatientInfo>
    <PatientNo>1234</PatientNo>
    <PatientName>测试</PatientName>
    <Phoneticize />
    <Sex>1</Sex>
    <Birth />
    <BirthPlace />
    <Country />
    <Nation />
    <IDNumber />
    <SecurityNo />
    <Workunits />
    <Address />
    <ZIPCode />
    <Phone />
    <ContactPerson />
    <ContactShip />
    <ContactPersonAdd />
    <ContactPersonPhone />
    <OperationCode />
    <OperationName />
    <OperationTime />
    <CardNo />
    <ChangeType />
  </PatientInfo>
</Request>
序列化xml 效果

 

posted @ 2018-04-04 09:24  革凡  阅读(1907)  评论(0编辑  收藏  举报