通俗的说:xml反序列化就是将xml转化为对应的对象
现有xml文件如下:
<?xml version="1.0" encoding="utf-16"?>
<学校 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<学生 姓名="李四" 学号="0443111121">
<分数 语文="90" 数学="89" 英语="85" />
</学生>
<学生 姓名="李四" 学号="0443111121">
<分数 语文="90" 数学="89" 英语="85" />
</学生>
</学校>
[XmlRoot("学校")]
public class School
{
List<Student> stu = new List<Student>();
[XmlElement(ElementName = "学生")]
public List<Student> Stu
{
get { return stu; }
set { stu = value; }
}
}
public class Student
{
private string name;
[XmlAttribute(AttributeName="姓名")]
public string Name
{
get { return name; }
set { name = value; }
}
private string stuID;
[XmlAttribute(AttributeName="学号")]
public string StuID
{
get { return stuID; }
set { stuID = value; }
}
private Score score = new Score();
[XmlElement(ElementName = "分数")]
public Score Score
{
get{return score;}
set{score=value;}
}
}
public class Score
{
private string chinese;
[XmlAttribute(AttributeName = "语文")]
public string Chinese
{
get { return chinese; }
set { chinese = value; }
}
private string math;
[XmlAttribute(AttributeName = "数学")]
public string Math
{
get { return math; }
set { math = value; }
}
private string english;
[XmlAttribute(AttributeName = "英语")]
public string English
{
get { return english; }
set { english = value; }
}
}
String s = @"<?xml version='1.0' encoding='utf-16'?>
<学校 xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema'>
<学生 姓名='张三' 学号='0443111121'>
<分数 语文='90' 数学='89' 英语='85' />
</学生>
<学生 姓名='李四' 学号='0443111121'>
<分数 语文='90' 数学='89' 英语='85' />
</学生>
</学校>";
School school;
StringReader sr = new StringReader(s);
XmlSerializer mySerializer = new XmlSerializer(typeof(School));
XmlReader xr =XmlReader.Create(sr);
school=mySerializer.Deserialize(xr)as School;
school对象就是xml反序列化的对象.