序列化多个对象

本文关键字:对象 序列化 | 更新日期: 2023-09-27 18:03:41

我正在尝试做一个应用程序,允许人们注册他们的信息,以便雇主可以阅读他们并与他们联系。

问题是每当我试图反序列化信息时,我要么只得到一个对象,要么程序抛出异常。

private void button1_Click(object sender, EventArgs e)
{
    FileStream sw = new FileStream("Applicants.xml",FileMode.Append,FileAccess.Write,FileShare.None);
    XmlSerializer xs = new XmlSerializer(typeof(Class1), new XmlRootAttribute("Applist"));
    Class1 cc = new Class1();
    cc.name = textBox1.Text;
    cc.age = textBox2.Text;
    cc.degree = textBox3.Text;
    cc.salary = textBox4.Text;
    cc.no = textBox5.Text;
    c.Add(cc);
    xs.Serialize(sw,cc);

    this.Hide();
}

我应该如何序列化和反序列化所有创建的对象?class1:

public class Class1
{
    public String name;
    public String age;
    public String degree;
    public String no;
    public String salary;
}
反序列化代码:
 private void linkLabel1_LinkClicked_1(object sender, LinkLabelLinkClickedEventArgs e)
 {
       List<Class1> c2 = new List<Class1>();
       XmlSerializer xml = new XmlSerializer(typeof(List<Class1>));
       FileStream fs = new FileStream("Applicants.xml",FileMode.Open);
       c2 = (List<Class1>)xml.Deserialize(fs);
       label3.Text = ; //don't know what t write here 
 }

序列化多个对象

如果要序列化列表,则必须为List<Class1>类型创建序列化器。

XmlSerializer xs = new XmlSerializer(typeof(List<Class1>), new XmlRootAttribute("Applist"));

然后序列化实际列表,而不是cc

xs.Serialize(sw,c);