随着面向服务(SOA)的开发方式的兴起,客户端和服务端之间的消息传送,很多采用了XML的格式。但是大家在日常的开发中,应该会有这么种体验,就是组织xml格式的代码太繁琐,这篇随笔也是为了和大家分享下简便的组织xml字符串的解决方案。
闲话不多说,我们直接上源码:
(1)自定义的实体类源码(简单的序列化我就不在赘述),大家可以仔细看下这个实体类源码中包含了好几个类,然后类之间有着层级调用,这样的方式就是为了在序列化的时候实现xml元素包含元素的形式;如果想要实现同一个元素并列展示,那么就需要声明为数组类型 如下的public long[] BlockID { get; set; }
所有要序列化的字段或者类都需要为public
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Xml.Serialization; 6 7 namespace Message.Entity 8 { 9 [XmlRoot("Message")]//标记根节点的名字 10 public class DYAreaTypeMessage 11 { 12 public Header Header{ get; set; } 13 public Payload Payload { get; set; } 14 } 15 16 [Serializable] 17 public class Header 18 { 19 public string Verb { get; set; } 20 public string Noun { get; set; } 21 } 22 23 [Serializable] 24 public class Payload 25 { 26 public NetworkChangeDetail NetworkChangeDetail { get; set; } 27 } 28 29 [Serializable] 30 public class DYAreaType 31 { 32 [XmlElement("BlockID",IsNullable=false)]//如果自己不定义元素的名字 ,那么序列化生成的元素就会变成字段类型的名称 33 public long[] BlockID { get; set; }//注意(1)该地方是一个数组的形式,不可以用list代替,不然将不能序列化 34 } 35 36 [Serializable] 37 public class NetworkChangeDetail 38 { 39 public DYAreaType DYAreaType 40 { 41 get; 42 set; 43 } 44 45 [XmlElement("MessageID",IsNullable=false)] 46 public string MessageID 47 { 48 get; 49 set; 50 } 51 [XmlElement("Buro")] 52 public string Buro 53 { 54 get; 55 set; 56 } 57 [XmlElement("SubBuro")] 58 public string SubBuro 59 { 60 get; 61 set; 62 } 63 64 [XmlElement("Description")] 65 public string Description 66 { 67 get; 68 set; 69 } 70 [XmlElement("DateTime")] 71 public string DateTime 72 { 73 get; 74 set; 75 } 76 }