今天需要解析一個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{ |