当前位置:编程学习 > XML/UML >>

关于XMLSerialization对复杂类的读和写

最近,为了将一个窗口内所有控件的值保存到一个XML文件中,得研究一个如何将一个类的值全部保存到一个XML文件中的例子。

于是google
http://msdn.microsoft.com/en-us/4kaaezfd(v=vs.90)
得到了这个地址,非常好,详细地给出了读写简单类的方法。

可惜,在进行复杂类的写入的时候,就是一个类内有另外一个的时候,出问题了,于是继续g
得到了 http://blog.csdn.net/menglin2010/article/details/7165553
这个例子。非常好,但是没有关于读的内容,于是,对微软的例子进行了一定的修改之后。内容如下。

学生类  student.cs
C#代码    
1. using System;  
2. using System.Collections.Generic;  
3. using System.Linq;  
4. using System.Text;  
5. using ConsoleApplication1;  
6. using System.Xml;  
7. using System.Xml.Serialization;  
8. namespace ConsoleApplication1  
9. {  
10.     public class student  
11.     {  
12.         //学生名字  
13.         private string _name;  
14.         [XmlElement]  
15.         public string name  
16.         {  
17.             get { return _name; }  
18.             set { _name = value; }  
19.         }  
20.         //学生年龄  
21.         private string _age = "";  
22.         [XmlElement]  
23.         public string age  
24.         {  
25.             get { return _age; }  
26.             set { _age = value; }  
27.         }  
28.     }  
29. } 


写出XML文件
C#代码    
1. using System;  
2. using System.Collections.Generic;  
3. using ConsoleApplication1;  
4. using System.Xml;  
5. using System.Xml.Serialization;  
6. namespace ConsoleApplication1  
7. {  
8.     [Serializable()]  
9.     [XmlRoot]  
10.     public class Book  
11.     {  
12.         public string title;  
13.         public int page;  
14.         public student sname;  
15.         public Book()  
16.         {  
17.         }  
18.         private static void Main()  
19.         {  
20.             Book introToVCS = new Book();  
21.             introToVCS.title = "Intro to Visual CSharp";  
22.             introToVCS.page = 26;  
23.             introToVCS.sname = new student();  
24.             introToVCS.sname.name = "xixi";  
25.             introToVCS.sname.age = "15";  
26.             System.Xml.Serialization.XmlSerializer writer =  
27.                 new System.Xml.Serialization.XmlSerializer(  
28.                     introToVCS.GetType());  
29.             System.IO.StreamWriter file =  
30.                 new System.IO.StreamWriter("c:\\IntroToVCS.xml");  
31.             writer.Serialize(file, introToVCS);  
32.             file.Close();  
33.         }  
34.     }  
35. } 


读入XML文件
C#代码    
1. using System;  
2. //http://msdn.microsoft.com/en-us/4kaaezfd(v=vs.90)  
3. using ConsoleApplication1;  
4. public class Book  
5. {  
6.     public string title;  
7.     public int page;  
8.     public student sname;  
9.     public Book()  
10.     {  
11.     }  
12.     static void Main()  
13.     {  
14.         Book introToVCS = new Book();  
15.         System.Xml.Serialization.XmlSerializer reader = new 
16.         System.Xml.Serialization.XmlSerializer(introToVCS.GetType());  
17.         // Read the XML file.  
18.         System.IO.StreamReader file =  
19.             new System.IO.StreamReader("c:\\IntroToVCS.xml");  
20.         // Deserialize the content of the file into a Book object.  
21.         introToVCS = (Book)reader.Deserialize(file);  
22.         System.Windows.Forms.MessageBox.Show(introToVCS.title, "Book Title");  
23.         System.Windows.Forms.MessageBox.Show(System.Convert.ToString(introToVCS.page), "Book PAGES");  
24.         System.Windows.Forms.Messag

补充:Web开发 , 其他 ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,