【问题标题】:How to restore data from XML into Windows Forms?如何将数据从 XML 还原到 Windows 窗体?
【发布时间】:2013-02-15 23:18:18
【问题描述】:

我保存数据如下图,现在我想把XML数据恢复到对应的文本框中。

CustomerData customer = new CustomerData();    
customer.FirstName = first_name.Text;    
customer.RegNo = reg_no.Text;    
customer.Department = dept.Text;    
XmlSerializer xs = new XmlSerializer(typeof(CustomerData));    

using(FileStream fs = new FileStream(@"D:\Data.xml", FileMode.Create)) {
    xs.Serialize(fs, customer);
}

MessageBox.Show("Inserted");

【问题讨论】:

  • 你的意思是如何反序列化()?

标签: c# xml winforms serialization


【解决方案1】:
XmlSerializer xs = new XmlSerializer(typeof(CustomerData));
using(FileStream fs = new FileStream(@"D:\Data.xml", FileMode.Open))
{
    CustomerData customer = (CustomerData)xs.Deserialize(fs);  
    first_name.Text = customer.FirstName;    
    reg_no.Text = customer.RegNo;    
    dept.Text = customer.Department; 
} 

更新如果您想保存客户数据更改的历史并加载最后一个,则保存并加载 CustomerData 对象列表:

private List<CustomerData> GetCustomers(string filename)
{
    if (!File.Exists(filename))
        return new List<CustomerData>();

    XmlSerializer xs = new XmlSerializer(typeof(List<CustomerData>));
    using (FileStream fs = new FileStream(filename, FileMode.Open))
        return (List<CustomerData>)xs.Deserialize(fs);
}

public void SaveCustomers(string filename, List<CustomerData> customers)
{
    XmlSerializer xs = new XmlSerializer(typeof(List<CustomerData>));
    using (FileStream fs = new FileStream(filename, FileMode.Create))
        xs.Serialize(fs, customers);
}

并用它来保存:

List<CustomerData> customers = GetCustomers(@"D:\Data.xml");
CustomerData customer = new CustomerData();
customer.FirstName = first_name.Text;
customer.RegNo = reg_no.Text;
customer.Department = dept.Text;
customers.Add(customer);
SaveCustomers(@"D:\Data.xml", customers);

并加载:

var customer = GetCustomers(@"D:\Data.xml").LastOrDefault();
if (customer != null)
{
    first_name.Text = customer.FirstName;
    reg_no.Text = customer.RegNo;
    dept.Text = customer.Department;
}

【讨论】:

  • 谢谢兄弟 :) 需要更多帮助吗?当我再次保存它时,第一个数据被下一个保存的数据覆盖。我想追加保存数据。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-23
  • 1970-01-01
  • 1970-01-01
  • 2021-03-13
  • 1970-01-01
相关资源
最近更新 更多