千家信息网

C#怎么实现实体类和XML的相互转换

发表于:2024-10-20 作者:千家信息网编辑
千家信息网最后更新 2024年10月20日,这篇文章主要为大家展示了"C#怎么实现实体类和XML的相互转换",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"C#怎么实现实体类和XML的相互转换"这篇文章
千家信息网最后更新 2024年10月20日C#怎么实现实体类和XML的相互转换

这篇文章主要为大家展示了"C#怎么实现实体类和XML的相互转换",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"C#怎么实现实体类和XML的相互转换"这篇文章吧。

一、实体类转换成XML

将实体类转换成XML需要使用XmlSerializer类的Serialize方法,将实体类序列化

public static string XmlSerialize(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();        }}

示例:

1、定义实体类

[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; }    }    ///     [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; }    }

2、给实体类赋值,并通过序列化将实体类转换成XML格式的字符串

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;            //序列化            string strxml = XmlSerializeHelper.XmlSerialize(patientIn);

3、生成的XML实例

  HIS  HIS5      1234    测试        1                                

二、将XML转换成实体类

把XML转换成相应的实体类,需要使用到XmlSerializer类的Deserialize方法,将XML进行反序列化。

public static T DESerializer(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;     }}

示例:

将上例中序列化后的XML反序列化成实体类

//反序列化Request r = XmlSerializeHelper.DESerializer(strxml);

三、将DataTable转换成XML

//将DataTable转换成XMLDataTable 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');//序列化,将DataTable转换成XML格式的字符串string strXML = XmlSerializeHelper.XmlSerialize  (dt);

四、将XML转换成DataTable

//反序列化,将XML转换成字符串DataTable dtNew=  XmlSerializeHelper.DESerializer(strXML);

五、将List集合转换成XML

/// /// 测试类/// public class Student{    public int Id { get; set; }    public string Name { get; set; }    public char Sex { get; set; }    public int Age { get; set; }}//测试集合List list = new List(){        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}};//序列化string strXML = XmlSerializeHelper.XmlSerialize>(list);

六、将XML转换成集合

使用上面例子中集合转换成的XML进行反序列化。

//反序列化List listStu = XmlSerializeHelper.DESerializer>(strXML);

以上是"C#怎么实现实体类和XML的相互转换"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

0