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