当类存在一对多的情况下的XML序列化
XML文档格式:
<?xml version="1.0"?>
<ArrayOfStudentXML xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<StudentXML NAME="Tom" AGE="10">
<CLASS>Class One</CLASS>
<NUMBER>1</NUMBER>
<Addresses Name="name0">
<City>City0</City>
<Road>Road0</Road>
</Addresses>
<Addresses Name="name1">
<City>City1</City>
<Road>Road1</Road>
</Addresses>
<Addresses Name="name2">
<City>City2</City>
<Road>Road2</Road>
</Addresses>
<Addresses Name="name3">
<City>City3</City>
<Road>Road3</Road>
</Addresses>
<Addresses Name="name4">
<City>City4</City>
<Road>Road4</Road>
</Addresses>
</StudentXML>
<StudentXML NAME="Jay" AGE="11">
<CLASS>Class Two</CLASS>
<NUMBER>2</NUMBER>
<Addresses Name="name0">
<City>City0</City>
<Road>Road0</Road>
</Addresses>
<Addresses Name="name1">
<City>City1</City>
<Road>Road1</Road>
</Addresses>
<Addresses Name="name2">
<City>City2</City>
<Road>Road2</Road>
</Addresses>
<Addresses Name="name3">
<City>City3</City>
<Road>Road3</Road>
</Addresses>
<Addresses Name="name4">
<City>City4</City>
<Road>Road4</Road>
</Addresses>
</StudentXML>
<StudentXML NAME="Pet" AGE="12">
<CLASS>Class One</CLASS>
<NUMBER>3</NUMBER>
<Addresses Name="name0">
<City>City0</City>
<Road>Road0</Road>
</Addresses>
<Addresses Name="name1">
<City>City1</City>
<Road>Road1</Road>
</Addresses>
<Addresses Name="name2">
<City>City2</City>
<Road>Road2</Road>
</Addresses>
<Addresses Name="name3">
<City>City3</City>
<Road>Road3</Road>
</Addresses>
<Addresses Name="name4">
<City>City4</City>
<Road>Road4</Road>
</Addresses>
</StudentXML>
<StudentXML NAME="May" AGE="13">
<CLASS>Class Three</CLASS>
<NUMBER>4</NUMBER>
<Addresses Name="name0">
<City>City0</City>
<Road>Road0</Road>
</Addresses>
<Addresses Name="name1">
<City>City1</City>
<Road>Road1</Road>
</Addresses>
<Addresses Name="name2">
<City>City2</City>
<Road>Road2</Road>
</Addresses>
<Addresses Name="name3">
<City>City3</City>
<Road>Road3</Road>
</Addresses>
<Addresses Name="name4">
<City>City4</City>
<Road>Road4</Road>
</Addresses>
</StudentXML>
<StudentXML NAME="Soy" AGE="14">
<CLASS>Class Two</CLASS>
<NUMBER>5</NUMBER>
<Addresses Name="name0">
<City>City0</City>
<Road>Road0</Road>
</Addresses>
<Addresses Name="name1">
<City>City1</City>
<Road>Road1</Road>
</Addresses>
<Addresses Name="name2">
<City>City2</City>
<Road>Road2</Road>
</Addresses>
<Addresses Name="name3">
<City>City3</City>
<Road>Road3</Road>
</Addresses>
<Addresses Name="name4">
<City>City4</City>
<Road>Road4</Road>
</Addresses>
</StudentXML>
</ArrayOfStudentXML>
<ArrayOfStudentXML xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<StudentXML NAME="Tom" AGE="10">
<CLASS>Class One</CLASS>
<NUMBER>1</NUMBER>
<Addresses Name="name0">
<City>City0</City>
<Road>Road0</Road>
</Addresses>
<Addresses Name="name1">
<City>City1</City>
<Road>Road1</Road>
</Addresses>
<Addresses Name="name2">
<City>City2</City>
<Road>Road2</Road>
</Addresses>
<Addresses Name="name3">
<City>City3</City>
<Road>Road3</Road>
</Addresses>
<Addresses Name="name4">
<City>City4</City>
<Road>Road4</Road>
</Addresses>
</StudentXML>
<StudentXML NAME="Jay" AGE="11">
<CLASS>Class Two</CLASS>
<NUMBER>2</NUMBER>
<Addresses Name="name0">
<City>City0</City>
<Road>Road0</Road>
</Addresses>
<Addresses Name="name1">
<City>City1</City>
<Road>Road1</Road>
</Addresses>
<Addresses Name="name2">
<City>City2</City>
<Road>Road2</Road>
</Addresses>
<Addresses Name="name3">
<City>City3</City>
<Road>Road3</Road>
</Addresses>
<Addresses Name="name4">
<City>City4</City>
<Road>Road4</Road>
</Addresses>
</StudentXML>
<StudentXML NAME="Pet" AGE="12">
<CLASS>Class One</CLASS>
<NUMBER>3</NUMBER>
<Addresses Name="name0">
<City>City0</City>
<Road>Road0</Road>
</Addresses>
<Addresses Name="name1">
<City>City1</City>
<Road>Road1</Road>
</Addresses>
<Addresses Name="name2">
<City>City2</City>
<Road>Road2</Road>
</Addresses>
<Addresses Name="name3">
<City>City3</City>
<Road>Road3</Road>
</Addresses>
<Addresses Name="name4">
<City>City4</City>
<Road>Road4</Road>
</Addresses>
</StudentXML>
<StudentXML NAME="May" AGE="13">
<CLASS>Class Three</CLASS>
<NUMBER>4</NUMBER>
<Addresses Name="name0">
<City>City0</City>
<Road>Road0</Road>
</Addresses>
<Addresses Name="name1">
<City>City1</City>
<Road>Road1</Road>
</Addresses>
<Addresses Name="name2">
<City>City2</City>
<Road>Road2</Road>
</Addresses>
<Addresses Name="name3">
<City>City3</City>
<Road>Road3</Road>
</Addresses>
<Addresses Name="name4">
<City>City4</City>
<Road>Road4</Road>
</Addresses>
</StudentXML>
<StudentXML NAME="Soy" AGE="14">
<CLASS>Class Two</CLASS>
<NUMBER>5</NUMBER>
<Addresses Name="name0">
<City>City0</City>
<Road>Road0</Road>
</Addresses>
<Addresses Name="name1">
<City>City1</City>
<Road>Road1</Road>
</Addresses>
<Addresses Name="name2">
<City>City2</City>
<Road>Road2</Road>
</Addresses>
<Addresses Name="name3">
<City>City3</City>
<Road>Road3</Road>
</Addresses>
<Addresses Name="name4">
<City>City4</City>
<Road>Road4</Road>
</Addresses>
</StudentXML>
</ArrayOfStudentXML>
类代码:
public class People
{
[XmlAttribute("NAME")]
public string Name
{ set; get; }
[XmlAttribute("AGE")]
public int Age
{ set; get; }
}
[XmlRoot("Root")]
public class StudentXML:People
{
[XmlElement("CLASS")]
public string Class
{ set; get; }
[XmlElement("NUMBER")]
public int Number
{ set; get; }
[XmlElement("Addresses")]
public Address[] Addresses
{
set;
get;
}
}
public class Address
{
[XmlAttribute("Name")]
public string Name
{
set;
get;
}
public string City
{ set; get; }
public string Road
{ set; get; }
}
{
[XmlAttribute("NAME")]
public string Name
{ set; get; }
[XmlAttribute("AGE")]
public int Age
{ set; get; }
}
[XmlRoot("Root")]
public class StudentXML:People
{
[XmlElement("CLASS")]
public string Class
{ set; get; }
[XmlElement("NUMBER")]
public int Number
{ set; get; }
[XmlElement("Addresses")]
public Address[] Addresses
{
set;
get;
}
}
public class Address
{
[XmlAttribute("Name")]
public string Name
{
set;
get;
}
public string City
{ set; get; }
public string Road
{ set; get; }
}
操作代码:
Address[] addList = new Address[5];
for (int i = 0; i < 5; i++)
{
Address add = new Address();
add.Name = "name" + i.ToString();
add.Road = "Road" + i.ToString();
add.City = "City" + i.ToString();
addList[i]=add;
}
List<StudentXML> stuList = new List<StudentXML>();
stuList.Add(new StudentXML() { Age = 10, Number = 1, Name = "Tom", Class = "Class One",Addresses=addList });
stuList.Add(new StudentXML() { Age = 11, Number = 2, Name = "Jay", Class = "Class Two", Addresses = addList });
stuList.Add(new StudentXML() { Age = 12, Number = 3, Name = "Pet", Class = "Class One", Addresses = addList });
stuList.Add(new StudentXML() { Age = 13, Number = 4, Name = "May", Class = "Class Three", Addresses = addList });
stuList.Add(new StudentXML() { Age = 14, Number = 5, Name = "Soy", Class = "Class Two", Addresses = addList });
XmlSerializer ser = new XmlSerializer(typeof(List<StudentXML>));
ser.Serialize(File.Create("C:\\x.xml"), stuList);
for (int i = 0; i < 5; i++)
{
Address add = new Address();
add.Name = "name" + i.ToString();
add.Road = "Road" + i.ToString();
add.City = "City" + i.ToString();
addList[i]=add;
}
List<StudentXML> stuList = new List<StudentXML>();
stuList.Add(new StudentXML() { Age = 10, Number = 1, Name = "Tom", Class = "Class One",Addresses=addList });
stuList.Add(new StudentXML() { Age = 11, Number = 2, Name = "Jay", Class = "Class Two", Addresses = addList });
stuList.Add(new StudentXML() { Age = 12, Number = 3, Name = "Pet", Class = "Class One", Addresses = addList });
stuList.Add(new StudentXML() { Age = 13, Number = 4, Name = "May", Class = "Class Three", Addresses = addList });
stuList.Add(new StudentXML() { Age = 14, Number = 5, Name = "Soy", Class = "Class Two", Addresses = addList });
XmlSerializer ser = new XmlSerializer(typeof(List<StudentXML>));
ser.Serialize(File.Create("C:\\x.xml"), stuList);
XML逆序列化:
using (System.IO.StreamReader reader = new System.IO.StreamReader("C:\\x.xml"))
{
System.Xml.Serialization.XmlSerializer xs = new System.Xml.Serialization.XmlSerializer(typeof(List<StudentXML>));
object obj = xs.Deserialize(reader);
reader.Close();
List<StudentXML> stu = new List<StudentXML>();
stu = (List<StudentXML>)obj;
}
{
System.Xml.Serialization.XmlSerializer xs = new System.Xml.Serialization.XmlSerializer(typeof(List<StudentXML>));
object obj = xs.Deserialize(reader);
reader.Close();
List<StudentXML> stu = new List<StudentXML>();
stu = (List<StudentXML>)obj;
}
浙公网安备 33010602011771号