COMPUTER_LZY

要输就输给追求,要嫁就嫁给幸福

导航

当类存在一对多的情况下的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>

类代码:

 

 public class People
    {
        [XmlAttribute("NAME")]
        public string Name
        { setget; }
        [XmlAttribute("AGE")]
        public int Age
        { setget; }
    }
     [XmlRoot("Root")]
    public class StudentXML:People
    {
        [XmlElement("CLASS")]
        public string Class
        { setget; }
        [XmlElement("NUMBER")]
        public int Number
        { setget; }


        [XmlElement("Addresses")]
        public Address[] Addresses
        {
            set;
            get;
        }
    }

     
     public class Address
     {
         [XmlAttribute("Name")]
         public string Name
         {
             set;
             get;
         }
        
         public string City
         { setget; }

         
         public string Road
         { setget; }
     }

操作代码:

 

 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);

 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;
            }

 

posted on 2011-10-20 08:41  CANYOUNG  阅读(316)  评论(0)    收藏  举报