天天看点

C#的XML序列化和反序列化2

5.格式化文本内容        

C#的XML序列化和反序列化2

         [XmlText()]

C#的XML序列化和反序列化2

         public string Name

C#的XML序列化和反序列化2
C#的XML序列化和反序列化2
C#的XML序列化和反序列化2

{

C#的XML序列化和反序列化2
C#的XML序列化和反序列化2

             get

C#的XML序列化和反序列化2

{ return name; }

C#的XML序列化和反序列化2
C#的XML序列化和反序列化2

             set

C#的XML序列化和反序列化2

{ name = value; }

C#的XML序列化和反序列化2

         }

         则Name会生成在<Pupil>XXX(Name)</Pupil>中作为文本

     6.为元素/属性定义数据类型

         XML Schema类型与.NET数据类型有一个Mapping,比如说type对应System.DateTime

C#的XML序列化和反序列化2

         [XmlElement(DataType = " date " )]

C#的XML序列化和反序列化2

         public DateTime EnrollDate

C#的XML序列化和反序列化2
C#的XML序列化和反序列化2
C#的XML序列化和反序列化2

{

C#的XML序列化和反序列化2
C#的XML序列化和反序列化2

             get

C#的XML序列化和反序列化2

{ return enrollDate; }

C#的XML序列化和反序列化2
C#的XML序列化和反序列化2

             set

C#的XML序列化和反序列化2

{ enrollDate = value; }

C#的XML序列化和反序列化2

         }

         于是生成XML: <EnrollDate>2007-10-19</EnrollDate>

         XMLRoot,XmlAttribute,XMLElement,XMLText,XMLArrayItem标签都可以指定DataType

     7.为枚举修饰符指定其他名称

C#的XML序列化和反序列化2

         public enum Color

C#的XML序列化和反序列化2
C#的XML序列化和反序列化2
C#的XML序列化和反序列化2

{

C#的XML序列化和反序列化2

             [XmlEnum(Name = " White Color " )]

C#的XML序列化和反序列化2

             White,

C#的XML序列化和反序列化2

             [XmlEnum(Name = " Black Color " )]

C#的XML序列化和反序列化2

             Black,

C#的XML序列化和反序列化2

             [XmlEnum(Name = " Red Color " )]

C#的XML序列化和反序列化2

             Red

C#的XML序列化和反序列化2

         }

C#的XML序列化和反序列化2
C#的XML序列化和反序列化2

         private Color showColor;

C#的XML序列化和反序列化2
C#的XML序列化和反序列化2

         public Color ShowColor

C#的XML序列化和反序列化2
C#的XML序列化和反序列化2
C#的XML序列化和反序列化2

{

C#的XML序列化和反序列化2
C#的XML序列化和反序列化2

             get

C#的XML序列化和反序列化2

{ return showColor; }

C#的XML序列化和反序列化2
C#的XML序列化和反序列化2

             set

C#的XML序列化和反序列化2

{ showColor = value; }

C#的XML序列化和反序列化2

         }

生成XML如下格式:

     <ShowColor>White Color</ShowColor>

     8.串行化多肽数组

C#的XML序列化和反序列化2

         [XmlArray(ElementName = " Cources " ),

C#的XML序列化和反序列化2

         XmlArrayItem(Type = typeof (String), ElementName = " CourceName " ),

C#的XML序列化和反序列化2

         XmlArrayItem(Type = typeof (Int32), ElementName = " CourceCode " )]

C#的XML序列化和反序列化2

         public Object[] Subjects

C#的XML序列化和反序列化2
C#的XML序列化和反序列化2
C#的XML序列化和反序列化2

{

C#的XML序列化和反序列化2
C#的XML序列化和反序列化2

             get

C#的XML序列化和反序列化2

{ return subjects; }

C#的XML序列化和反序列化2
C#的XML序列化和反序列化2

             set

C#的XML序列化和反序列化2

{ subjects = value; }

C#的XML序列化和反序列化2

         }

XmlArrayItem负责指定数组中可能出现的元素类型,以及该类型对应的XML前缀

比如说创建如下的数组:

     Object obj = new Object["Physics", 123, "IT"];

生成XML如下格式:

C#的XML序列化和反序列化2

< Cources >

C#的XML序列化和反序列化2

     < CourceName > Physics </ CourceName >

C#的XML序列化和反序列化2

     < CourceCode > 123 </ CourceCode >

C#的XML序列化和反序列化2

     < CourceName > IT </ CourceName >

C#的XML序列化和反序列化2

</ Cources >

     9.定义可空的对象引用

         如果某属性为null,在串行化时会忽略该属性,可以显示替代的信息,方法如下:

C#的XML序列化和反序列化2

         [XmlElement(IsNullable = true )]

C#的XML序列化和反序列化2

         public string Address

C#的XML序列化和反序列化2
C#的XML序列化和反序列化2
C#的XML序列化和反序列化2

{

C#的XML序列化和反序列化2
C#的XML序列化和反序列化2

             get

C#的XML序列化和反序列化2

{ return address; }

C#的XML序列化和反序列化2
C#的XML序列化和反序列化2

             set

C#的XML序列化和反序列化2

{ address = value; }

C#的XML序列化和反序列化2

         }

在该位置,生成替代XML:

      <Address xsi:nil="true" />

     10.定义可忽略的字段/属性

         [XmlIgnore()]