ذخیره لیستی یک کلاس در فایل xml
با سلام
دوستان من می خوام لیستی از یه کلاس رو در یه فایل xml ذخیره کنم و بعد بخونم
مثلا کلاس MyClass که به صورت زیر می باشد رو به صورت یه لیست ازش دارم و می خوام در فایل xml ذخیره کنم و از فایل xml همون لیست رو بتونم بازیابی کنم ممنون می شم راهنماییم کنید با تشکر
public Class MyClass
{
public int ID{get;set;}
public string Name{get;set}
}
نقل قول: ذخیره لیستی یک کلاس در فایل xml
اول باید به کلاست قابلیت serialize رو اضافه کنی
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Serialization;
namespace WindowsFormsApplication1
{
[XmlRootAttribute]
class user
{
[XmlElementAttribute]
public string UserName;
[XmlElementAttribute]
public string password;
}
}
بعد دوتا دکمه بزار روی یک فرم و اینجوری کد بزن :
private void SaveXmlButton_Click(object sender, EventArgs e)
{
user user1=new user();
user1.UserName="Admin";
user1.password="123";
XmlSerializer sr = new XmlSerializer(typeof(user));
TextWriter tr =new StreamWriter("d:\\user1.xml");
sr.Serialize(tr,user1);
tr.Close();
}
private void ReadXML_Click(object sender, EventArgs e)
{
user user2 = new user();
XmlSerializer sr = new XmlSerializer(typeof(user));
TextReader tr = new StreamReader("d:\\user1.xml");
user2 = (user)sr.Deserialize(tr);
MessageBox.Show(user2.UserName);
}
فقط یادت باشه که این رو به بالای فرم اضافه کنی :
using System.Xml.Serialization;
using System.IO;
نقل قول: ذخیره لیستی یک کلاس در فایل xml
با سلام
ممنون از لطف شما , اما این یه کلاس را ذخیره می کنه چطور می شه یه لیست از کلاس را ذخیره کرد با تشکر
نقل قول: ذخیره لیستی یک کلاس در فایل xml
برای اینکار از راحت ترین روش استفاده از ArrayList هست
متغیرهایی که از نوع ArrayList تعریف شده باشند خود به خود Serialize هستند
لیستی از شی مورد نظر بسازید و با همین روش آرایه رو ذخیره کنید
نقل قول: ذخیره لیستی یک کلاس در فایل xml
با سلام
به جای استفاده از ArrayList از Generic استفاده بکنید ( دلیلش رو هم بارها گفته شده )
به این شکل :
private void Form1_Load(object sender, EventArgs e)
{
List<user> Users = new List<user>
{
new user{UserName="mmd2009",password="123"},
new user{UserName="mmd2010",password="123"},
new user{UserName="mmd2011",password="123"}
};
}
[XmlRootAttribute]
class user
{
[XmlElementAttribute]
public string UserName;
[XmlElementAttribute]
public string password;
}
موفق باشید
نقل قول: ذخیره لیستی یک کلاس در فایل xml
نقل قول:
نوشته شده توسط
mmd2009
با سلام
به جای استفاده از ArrayList از Generic استفاده بکنید ( دلیلش رو هم بارها گفته شده )
به این شکل :
private void Form1_Load(object sender, EventArgs e)
{
List<user> Users = new List<user>
{
new user{UserName="mmd2009",password="123"},
new user{UserName="mmd2010",password="123"},
new user{UserName="mmd2011",password="123"}
};
}
[XmlRootAttribute]
class user
{
[XmlElementAttribute]
public string UserName;
[XmlElementAttribute]
public string password;
}
موفق باشید
با سلام
ممنون می شم یه مثال با استفاده از Generic برای Save,Load یک لیست کلاس بنویسید با تشکر
نقل قول: ذخیره لیستی یک کلاس در فایل xml
نقل قول:
با سلام
ممنون می شم یه مثال با استفاده از Generic برای Save,Load یک لیست کلاس بنویسید با تشکر
با اجازه دوست عزیزم جناب دیناروند
using System;
using System.Collections.Generic;
using System.IO;
using System.Windows.Forms;
using System.Xml.Serialization;
namespace PetekDincos_serialize
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public class MyClass
{
[XmlElement("ID")]
public int ID
{
get;set;
}
[XmlElement("Name")]
public string Name
{
get; set;
}
}
[XmlRoot("MyClassList")]
public class MyClassList
{
public MyClassList()
{
Items = new List<MyClass>();
}
[XmlElement("MyClass")]
public List<MyClass> Items
{
get; set;
}
}
private void btnSerialize_Click(object sender, EventArgs e)
{
XmlSerializer serializer = new XmlSerializer(typeof(MyClassList));
MyClassList myClassList = new MyClassList();
myClassList.Items.Add(new MyClass { ID = 1, Name = "Test" });
myClassList.Items.Add(new MyClass { ID = 2, Name = "Test2" });
using (FileStream fStream = new FileStream(Application.StartupPath + "\\MyList.xml", FileMode.Create))
{
serializer.Serialize(fStream, myClassList);
}
}
private void btnDeSrialize_Click(object sender, EventArgs e)
{
using (FileStream fStream = new FileStream(Application.StartupPath + "\\MyList.xml", FileMode.Open))
{
XmlSerializer serializer = new XmlSerializer(typeof(MyClassList));
MyClassList myClassList = (MyClassList)serializer.Deserialize(fStream);
}
}
}
}
موفق باشید.