一、实体类转换成XML
将实体类转换成XML需要使用XmlSerializer类的Serialize方法,将实体类序列化
1
2
3
4
5
6
7
8
9
10
11
|
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、定义实体类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
[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格式的字符串
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
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实例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
<? 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进行反序列化。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
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反序列化成实体类
1
2
|
//反序列化 Request r = XmlSerializeHelper.DESerializer<Request>(strxml); |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。