软件编程
位置:首页>> 软件编程>> C#编程>> C#实现实体类和XML相互转换

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

作者:.NET开发菜鸟  发布时间:2023-06-16 04:37:32 

标签:C#,XML,实体类

一、实体类转换成XML

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


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();
 }
}

示例:

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

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

}

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<Request>(patientIn);

3、生成的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转换成实体类

把XML转换成相应的实体类,需要使用到XmlSerializer类的Deserialize方法,将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;
 }
}

示例:

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


//反序列化
Request r = XmlSerializeHelper.DESerializer<Request>(strxml);
0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com