今天需要解析一個XML,這個XML和一般情況用.NET的序列化出來的格式不太一樣。
我就又補習了一下。
分享一下學習成果吧。
示例代碼下載:
http://download.csdn.net/detail/bdstjk/4028340
使用屬性可以控制對象的 XML 序列化。
默認情況下,XML 元素名稱由類或成員名稱確定。在名為Book的簡單類中,字段ISBN將生成 XML 元素標記 <ISBN>,如下面的示例所示。
1 | publicclassBook |
2 | { |
3 | publicstringISBN; |
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 | publicclassTaxRates{ |
2 | [XmlElement(ElementName ="TaxRate")] |
3 | publicdecimalReturnTaxRate; |
4 | } |
XmlArrayAttribute 和 XmlArrayItemAttribute 屬性旨在用于控制數組的序列化。使用這些屬性可以控制元素名稱、命名空間以及 XML 架構 (XSD) 數據類型(在萬維網聯合會 [www.w3.org] 文檔“XML 架構第 2 部分:數據類型”中進行了定義)。此外,還可以指定數組所能包含的類型。
對于序列化數組時生成的封閉 XML 元素,其屬性將由XmlArrayAttribute確定。例如,默認情況下,序列化下面的數組時,將會生成名為Employees的 XML 元素。Employees元素將包含在數組類型Employee之后命名的一系列元素。
1 | publicclassGroup{ |
2 | publicEmployee[] Employees; |
3 | } |
4 | publicclassEmployee{ |
5 | publicstringName; |
6 | } |
序列化實例可能如下所示。
1 | <Group> |
2 | <Employees> |
3 | <Employee> |
4 | <Name>Haley</Name> |
5 | </Employee> |
6 | </Employees> |
7 | </Group> |
通過應用XmlArrayAttribute,可以按照以下方式更改 XML 元素的名稱。
1 | publicclassGroup{ |
2 | [XmlArray("TeamMembers")] |
3 | publicEmployee[] Employees; |
4 | } |
生成的 XML 可能如下所示。
1 | <Group> |
2 | <TeamMembers> |
3 | <Employee> |
4 | <Name>Haley</Name> |
5 | </Employee> |
6 | </TeamMembers> |
另一方面,XmlArrayItemAttribute可以控制如何序列化數組中包含的項。請注意,該屬性將應用于返回數組的字段。
1 | publicclassGroup{ |
2 | |