首页 > 学院 > 开发设计 > 正文

在C#中使用属性控制 XML 序列化来解析XML

2019-11-17 03:13:23
字体:
来源:转载
供稿:网友
在C#中使用属性控制 xml 序列化来解析XML

今天需要解析一个XML,这个XML和一般情况用.NET的序列化出来的格式不太一样。

我就又补习了一下。

分享一下学习成果吧。

示例代码下载:

http://download.csdn.net/detail/bdstjk/4028340

使用属性可以控制对象的 XML 序列化。

默认情况下,XML 元素名称由类或成员名称确定。在名为Book的简单类中,字段ISBN将生成 XML 元素标记 <ISBN>,如下面的示例所示。

1publicclassBook
2{
3publicstringISBN;
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) 实现此目的。

1publicclassTaxRates{
2[XmlElement(ElementName ="TaxRate")]
3publicdecimalReturnTaxRate;
4}

XmlArrayAttribute 和 XmlArrayItemAttribute 属性旨在用于控制数组的序列化。使用这些属性可以控制元素名称、命名空间以及 XML 架构 (XSD) 数据类型(在万维网联合会 [www.w3.org] 文档“XML 架构第 2 部分:数据类型”中进行了定义)。此外,还可以指定数组所能包含的类型。

对于序列化数组时生成的封闭 XML 元素,其属性将由XmlArrayAttribute确定。例如,默认情况下,序列化下面的数组时,将会生成名为Employees的 XML 元素。Employees元素将包含在数组类型Employee之后命名的一系列元素。

1publicclassGroup{
2publicEmployee[] Employees;
3}
4publicclassEmployee{
5publicstringName;
6}

序列化实例可能如下所示。

1<Group>
2<Employees>
3<Employee>
4<Name>Haley</Name>
5</Employee>
6</Employees>
7</Group>

通过应用XmlArrayAttribute,可以按照以下方式更改 XML 元素的名称。

1publicclassGroup{
2[XmlArray("TeamMembers")]
3publicEmployee[] Employees;
4}

生成的 XML 可能如下所示。

1<Group>
2<TeamMembers>
3<Employee>
4<Name>Haley</Name>
5</Employee>
6</TeamMembers>

另一方面,XmlArrayItemAttribute可以控制如何序列化数组中包含的项。请注意,该属性将应用于返回数组的字段。

1publicclassGroup{
2
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表