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

以上是 C#实现实体类和XML相互转换 的全部内容, 来源链接: utcz.com/z/337135.html

回到顶部