今天需要解析一个XML,这个XML和一般情况用.NET的序列化出来的格式不太一样。
我就又补习了一下。
分享一下学习成果吧。
示例代码下载:
http://download.csdn.net/detail/bdstjk/4028340
使用属性可以控制对象的 XML 序列化。
默认情况下,XML 元素名称由类或成员名称确定。在名为Book
的简单类中,字段ISBN
将生成 XML 元素标记 <ISBN>,如下面的示例所示。
1 | public class Book |
2 | { |
3 |
public string ISBN; |
4 | } |
5 | // When an instance of the Book class is serialized, it might |
6 | // PRoduce this XML: |
7 | // <ISBN>1234567890</ISBN>. |
若要重新命名元素,可以更改这种默认行为。下面的代码演示属性 (Attribute) 如何通过设置 XmlElementAttribute 的 ElementName 属性 (Property) 实现此目的。
1 | public class TaxRates{ |
2 |
[XmlElement(ElementName = "TaxRate" )] |
3 |
public decimal ReturnTaxRate; |
4 | } |
XmlArrayAttribute 和 XmlArrayItemAttribute 属性旨在用于控制数组的序列化。使用这些属性可以控制元素名称、命名空间以及 XML 架构 (XSD) 数据类型(在万维网联合会 [www.w3.org] 文档“XML 架构第 2 部分:数据类型”中进行了定义)。此外,还可以指定数组所能包含的类型。
对于序列化数组时生成的封闭 XML 元素,其属性将由XmlArrayAttribute确定。例如,默认情况下,序列化下面的数组时,将会生成名为Employees
的 XML 元素。Employees
元素将包含在数组类型Employee
之后命名的一系列元素。
1 | public class Group{ |
2 |
public Employee[] Employees; |
3 | } |
4 | public class Employee{ |
5 |
public string Name; |
6 | } |
序列化实例可能如下所示。
1 | < Group > |
2 | < Employees > |
3 |
< Employee > |
4 |
< Name >Haley</ Name > |
5 |
</ Employee > |
6 | </ Employees > |
7 | </ Group > |
通过应用XmlArrayAttribute,可以按照以下方式更改 XML 元素的名称。
1 | public class Group{ |
2 |
[XmlArray( "TeamMembers" )] |
3 |
public Employee[] Employees; |
4 | } |
生成的 XML 可能如下所示。
1 | < Group > |
2 | < TeamMembers > |
3 |
< Employee > |
4 |
< Name >Haley</ Name > |
5 |
</ Employee > |
6 | </ TeamMembers > |
另一方面,XmlArrayItemAttribute可以控制如何序列化数组中包含的项。请注意,该属性将应用于返回数组的字段。
1 | public class Group{ |
2 |
|