2013-02-15 36 views
2

我保存了如下所示的数据,现在我想将XML数据恢复到相应的文本框中。如何从XML恢复数据到Windows窗体?

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"); 
+0

你的意思是如何反序列化()? – Alex 2013-02-15 14:51:39

回答

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

UPDATE如果你想保存的客户数据变化的历史和加载最后一个,然后保存并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; 
} 
+0

感谢兄弟:)需要一个更多的帮助?当我再次保存它时,第一个数据被下一个保存的数据覆盖。我想追加保存数据。 – 2013-02-15 15:00:31

+1

其工作:)谢谢你lazyberezovsky .. – 2013-02-15 15:46:20