1
2
3
4
5
6
7
8
9
10
11
12
|
class
Program
{
static
void
Main(
string
[] args)
{
int
i = 10;
//声明Xml序列化对象实例serializer
XmlSerializer serializer =
new
XmlSerializer(
typeof
(
));
//执行序列化并将序列化结果输出到控制台
serializer.Serialize(Console.Out,i);
Console.Read();
}
}
|
上面代码对int i进行了序列化,并将序列化的结果输出到了控制台,输出结果如下
<?
xml
version="1.0" encoding="gb2312"?>
<
int
>10</
>
可以将上述序列化的xml进行反序列化,如下代码
using
(StringReader rdr =
StringReader(
@"<?xml version=""1.0"" encoding=""gb2312""?>
<int>10</int>"
))
//声明序列化对象实例serializer
)serializer.Deserialize(rdr);
//输出反序列化结果
"i = "
+ i);
Console.Read();
}
以上代码用最简单的方式说明了xml序列化和反序列化的过程,.Net系统类库为我们做了大量的工作,序列化和反序列化都非常简单。但是在现实中业务需求往往比较复杂,不可能只简单的序列化一个int变量,显示中我们需要对复杂类型进行可控制的序列化。
自定义对象的Xml序列化:
System.Xml.Serialization命名空间中有一系列的特性类,用来控制复杂类型序列化的控制。例如XmlElementAttribute、XmlAttributeAttribute、XmlArrayAttribute、XmlArrayItemAttribute、XmlRootAttribute等等。
看一个小例子,有一个自定义类Cat,Cat类有三个属性分别为Color,Saying,Speed。
UseXmlSerialization
Program
[] args)
{
var
c =
Cat { Color =
"White"
,Speed = 10,Saying =
"White or black,so long as the cat can catch mice,it is a good cat"
};
//序列化这个对象
Console.Read();
}
[XmlRoot(
"cat"
)]
Cat
{
[XmlAttribute(
"color"
)]
get
;
set
; }
[XmlIgnore]
; }
[XmlElement(
"saying"
)]
; }
}
}