首页 > 编程 > C# > 正文

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

2019-10-29 21:12:38
字体:
来源:转载
供稿:网友

一、实体类转换成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);

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持VEVB武林网。


注:相关教程知识阅读请移步到c#教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表