ذخیره و بازیابی تمامی اطلاعات در XML سی شارپ
#1
Note 
درود به کاربران ، مدیران و همراهان گرامی سافت افزار،

در اینجا قرار است که با یاری همدیگر ، کدهای ذخیره ی اطلاعات در فایل XML را در زبان شیرین سی شارپ آموزش دهیم.

چنانچه سوالی برای شما دوستان گرامی پیش آمد ، خواهشمندیم در تاپیک جداگانه آنرا بپرسید.

سپاس گذارم.

تمامی کدها بر پایه کلاس پشمک میباشد ، یعنی شما نیازمند به ایجاد کلاسی به کد زیر هستید :

[CSHARP]
using System.Xml;
namespace SaveSettingsBySoftAfZaR
{
class Pashmak
{
public static XmlDocument XmlDoc;
}
}
[/CSHARP]
چرا من از یک کلاس خارجی برای اینکار استفاده میکنم؟ چون که این شکلی خیلی راحت میشود که از کدها در فرم های مختلف به صورت همزمان استفاده نمایید!
پس usingـه مورد نیاز در کل این پروژه ها ،این ها میباشند :

[CSHARP]
using System.Xml;
using System.IO;
[/CSHARP]

منبع : سافت افزار

کدنویس : رامتین جوکار
کپی برداری از کدهای پایین فقط با ذکر نام سافت افزار قانونی و مجاز میباشد.

آخرین ویرایش: 03-11-2013 ساعت 15:38، توسط The Arrow
پاسخ
#2
Note 
برای ذخیره ی TextBox ها کد زیر را به کار ببرید :

[CSHARP]
Pashmak.XmlDoc = new XmlDocument();
XmlElement XRootA = Pashmak.XmlDoc.CreateElement("TextBoxes");

XmlElement txtbox1 = Pashmak.XmlDoc.CreateElement("textBox1");
txtbox1.InnerText = textBox1.Text;

XmlElement txtbox2 = Pashmak.XmlDoc.CreateElement("textBox2");
txtbox2.InnerText = textBox2.Text;

XRootA.AppendChild(txtbox1);
XRootA.AppendChild(txtbox2);

Pashmak.XmlDoc.AppendChild(XRootA);

SaveFileDialog sd = new SaveFileDialog();
sd.Filter = "SoftAfzar Database (*.db)|*.db";
Random randomize = new Random();
sd.FileName = "SoftAfzar Database" + randomize.Next();
if (sd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
StreamWriter save = new StreamWriter(sd.FileName);
save.Write(Pashmak.XmlDoc.InnerXml);
save.Close();
}
[/CSHARP]

و همچنین برای بازیابی اطلاعات از کد زیر استفاده نمایید :

[CSHARP]
OpenFileDialog od = new OpenFileDialog();
od.Filter = "SoftAfzar Database (*.db)|*.db";
od.FileName = "SoftAfzar Database.db";
if (od.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
StreamReader loaddb = new StreamReader(od.FileName);
string data = loaddb.ReadToEnd();
loaddb.Close();
Pashmak.XmlDoc = new XmlDocument();
try
{
Pashmak.XmlDoc.LoadXml(data);
}
catch
{
return;
}
XmlNodeList XnL = Pashmak.XmlDoc.ChildNodes;
for (int i = 0; i < Pashmak.XmlDoc.ChildNodes.Count; i++)
{
switch (XnL[i].Name)
{
case "TextBoxes":
XmlNodeList XnL2 = XnL[i].ChildNodes;
for (int j = 0; j < XnL2.Count; j++)
{
switch (XnL2[j].Name)
{
case "textBox1":
textBox1.Text = XnL2[j].InnerText;
break;
case "textBox2":
textBox2.Text = XnL2[j].InnerText;
break;
}
}
break;
}
}
}
[/CSHARP]

پاسخ
#3
Note 
برای ذخیره ی RadioButton ها کد زیر را به کار ببرید :

[CSHARP]
Pashmak.XmlDoc = new XmlDocument();
XmlElement XRootA = Pashmak.XmlDoc.CreateElement("RadioButton");

XmlElement radiobtn1 = Pashmak.XmlDoc.CreateElement("radioButton1");
radiobtn1.InnerText = radioButton1.Checked.ToString();

XmlElement radiobtn2 = Pashmak.XmlDoc.CreateElement("radioButton2");
radiobtn2.InnerText = radioButton2.Checked.ToString();

XRootA.AppendChild(radiobtn1);
XRootA.AppendChild(radiobtn2);

Pashmak.XmlDoc.AppendChild(XRootA);

SaveFileDialog sd = new SaveFileDialog();
sd.Filter = "SoftAfzar Database (*.db)|*.db";
Random randomize = new Random();
sd.FileName = "SoftAfzar Database" + randomize.Next();
if (sd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
StreamWriter save = new StreamWriter(sd.FileName);
save.Write(Pashmak.XmlDoc.InnerXml);
save.Close();
}
[/CSHARP]

و همچنین برای بازیابی اطلاعات آن از کد زیر استفاده نمایید :
[CSHARP]
OpenFileDialog od = new OpenFileDialog();
od.Filter = "SoftAfzar Database (*.db)|*.db";
od.FileName = "SoftAfzar Database.db";
if (od.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
StreamReader loaddb = new StreamReader(od.FileName);
string data = loaddb.ReadToEnd();
loaddb.Close();
Pashmak.XmlDoc = new XmlDocument();
try
{
Pashmak.XmlDoc.LoadXml(data);
}
catch
{
return;
}
XmlNodeList XnL = Pashmak.XmlDoc.ChildNodes;
for (int i = 0; i < Pashmak.XmlDoc.ChildNodes.Count; i++)
{
switch (XnL[i].Name)
{
case "RadioButton":
XmlNodeList XnL2 = XnL[i].ChildNodes;
for (int j = 0; j < XnL2.Count; j++)
{
switch (XnL2[j].Name)
{
case "radioButton1":
radioButton1.Checked = bool.Parse(XnL2[j].InnerText);
break;
case "radioButton2":
radioButton2.Checked = bool.Parse(XnL2[j].InnerText);
break;
}
}
break;
}
}
}
[/CSHARP]

پاسخ
#4
Note 
برای ذخیره ی CheckBoxها کد زیر را به کار ببرید :

[CSHARP]
Pashmak.XmlDoc = new XmlDocument();
XmlElement XRootA = Pashmak.XmlDoc.CreateElement("CheckBoxes");

XmlElement chbox1 = Pashmak.XmlDoc.CreateElement("checkBox1");
chbox1.InnerText = checkBox1.Checked.ToString();

XmlElement chbox2 = Pashmak.XmlDoc.CreateElement("checkBox2");
chbox2.InnerText = checkBox2.Checked.ToString();

XRootA.AppendChild(chbox1);
XRootA.AppendChild(chbox2);

Pashmak.XmlDoc.AppendChild(XRootA);

SaveFileDialog sd = new SaveFileDialog();
sd.Filter = "SoftAfzar Database (*.db)|*.db";
Random randomize = new Random();
sd.FileName = "SoftAfzar Database" + randomize.Next();
if (sd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
StreamWriter save = new StreamWriter(sd.FileName);
save.Write(Pashmak.XmlDoc.InnerXml);
save.Close();
}
[/CSHARP]

و همچنین برای بازیابی اطلاعات آن از کد زیر استفاده نمایید :
[CSHARP]
OpenFileDialog od = new OpenFileDialog();
od.Filter = "SoftAfzar Database (*.db)|*.db";
od.FileName = "SoftAfzar Database.db";
if (od.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
StreamReader loaddb = new StreamReader(od.FileName);
string data = loaddb.ReadToEnd();
loaddb.Close();
Pashmak.XmlDoc = new XmlDocument();
try
{
Pashmak.XmlDoc.LoadXml(data);
}
catch
{
return;
}
XmlNodeList XnL = Pashmak.XmlDoc.ChildNodes;
for (int i = 0; i < Pashmak.XmlDoc.ChildNodes.Count; i++)
{
switch (XnL[i].Name)
{
case "CheckBoxes":
XmlNodeList XnL2 = XnL[i].ChildNodes;
for (int j = 0; j < XnL2.Count; j++)
{
switch (XnL2[j].Name)
{
case "checkBox1":
checkBox1.Checked = bool.Parse(XnL2[j].InnerText);
break;
case "checkBox2":
checkBox2.Checked = bool.Parse(XnL2[j].InnerText);
break;
}
}
break;
}
}
}
[/CSHARP]

آخرین ویرایش: 02-11-2013 ساعت 17:26، توسط The Arrow
پاسخ
#5
Note 
برای ذخیره ی ListBoxها کد زیر را به کار ببرید :

[CSHARP]
Pashmak.XmlDoc = new XmlDocument();
XmlElement listBoxP = Pashmak.XmlDoc.CreateElement("ListBoxes");
{
for (int i = 0; i < listBox1.Items.Count; i++)
{
XmlElement Item = Pashmak.XmlDoc.CreateElement("Item");
Item.InnerText = listBox1.Items[i].ToString();
listBoxP.AppendChild(Item);
}
}
Pashmak.XmlDoc.AppendChild(listBoxP);

SaveFileDialog sd = new SaveFileDialog();
sd.Filter = "SoftAfzar Database (*.db)|*.db";
Random randomize = new Random();
sd.FileName = "SoftAfzar Database" + randomize.Next();
if (sd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
StreamWriter save = new StreamWriter(sd.FileName);
save.Write(Pashmak.XmlDoc.InnerXml);
save.Close();
}
[/CSHARP]

و همچنین برای بازیابی اطلاعات آن از کد زیر استفاده نمایید :

[CSHARP]
OpenFileDialog od = new OpenFileDialog();
od.Filter = "SoftAfzar Database (*.db)|*.db";
od.FileName = "SoftAfzar Database.db";
if (od.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
StreamReader loaddb = new StreamReader(od.FileName);
string data = loaddb.ReadToEnd();
loaddb.Close();
Pashmak.XmlDoc = new XmlDocument();
try
{
Pashmak.XmlDoc.LoadXml(data);
}
catch
{
return;
}
XmlNodeList XnL = Pashmak.XmlDoc.ChildNodes;
for (int i = 0; i < Pashmak.XmlDoc.ChildNodes.Count; i++)
{
switch (XnL[i].Name)
{
case "ListBoxes":
XmlNodeList XnL2 = XnL[i].ChildNodes;
for (int j = 0; j < XnL2.Count; j++)
{
switch (XnL2[j].Name)
{
case "Item":
listBox1.Items.Add(XnL2[j].InnerText);
break;
}
}
break;
}
}
}
[/CSHARP]

پاسخ
#6
Note 
برای ذخیره ی DataGridView ها کد زیر را به کار ببرید :
[CSHARP]
Pashmak.XmlDoc = new XmlDocument();
XmlElement XRootA = Pashmak.XmlDoc.CreateElement("Pashmak");
XmlElement XRootB = Pashmak.XmlDoc.CreateElement("Softafzar");
{
XmlElement XItems = Pashmak.XmlDoc.CreateElement("Items");
for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)
{
try
{
XmlElement XItem = Pashmak.XmlDoc.CreateElement("Item");
XmlElement XCLM1 = Pashmak.XmlDoc.CreateElement("Column1");
XmlElement XCLM2 = Pashmak.XmlDoc.CreateElement("Column2");
XCLM1.InnerText = dataGridView1.Rows[i].Cells[0].Value.ToString();
XCLM2.InnerText = dataGridView1.Rows[i].Cells[1].Value.ToString();
XItem.AppendChild(XCLM1);
XItem.AppendChild(XCLM2);
XItems.AppendChild(XItem);
}
catch { }
}
XRootB.AppendChild(XItems);
XRootA.AppendChild(XRootB);
}
Pashmak.XmlDoc.AppendChild(XRootA);
SaveFileDialog sd = new SaveFileDialog();
sd.Filter = "SoftAfzar Database (*.db)|*.db";
Random randomize = new Random();
sd.FileName = "SoftAfzar Database" + randomize.Next();
string filePath = "";
if (sd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
StreamWriter save = new StreamWriter(sd.FileName);
save.Write(Pashmak.XmlDoc.InnerXml);
filePath = sd.FileName;
label1.Text = "Database Saved on\n" + filePath;
save.Close();
}
[/CSHARP]

و همچنین برای بازیابی اطلاعات آن از کد زیر استفاده نمایید :

[CSHARP]
OpenFileDialog od = new OpenFileDialog();
od.Filter = "SoftAfzar Database (*.db)|*.db";
od.FileName = "SoftAfzar Database.db";
if (od.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
StreamReader loaddb = new StreamReader(od.FileName);
string data = loaddb.ReadToEnd();
loaddb.Close();
Pashmak.XmlDoc = new XmlDocument();
try
{
Pashmak.XmlDoc.LoadXml(data);
}
catch
{
return;
}
if (Pashmak.XmlDoc == null || Pashmak.XmlDoc.InnerXml == "")
return;
XmlNode XmlRoot = Pashmak.XmlDoc.GetElementsByTagName("Pashmak")[0];
for (int i = 0; i < XmlRoot.ChildNodes.Count; i++)
{

XmlNode XmlRChild = XmlRoot.ChildNodes[i];
switch (XmlRChild.Name)
{
case "Softafzar":
if (XmlRChild.SelectSingleNode("//Pashmak/Softafzar/Items") != null &&
XmlRChild.SelectSingleNode("//Pashmak/Softafzar/Items/Item") != null)
{
XmlNodeList ItemsList = XmlRChild.SelectNodes("//Pashmak/Softafzar/Items/Item");
for (int j = 0; j < ItemsList.Count; j++)
{
string A = "", B = "";
for (int t = 0; t < ItemsList[j].ChildNodes.Count; t++)
{
if (ItemsList[j].ChildNodes[t].Name == "Column1")
A = ItemsList[j].ChildNodes[t].InnerText;
else if (ItemsList[j].ChildNodes[t].Name == "Column2")
B = ItemsList[j].ChildNodes[t].InnerText;
}
dataGridView1.Rows.Add(A, B);
}
}
break;
}
}
}
[/CSHARP]

پاسخ
#7
Note 
خب دیروز که داشتم پست های بالا رو میدادم مبنای کارم این بود که در آخر جمع بندی کنیم و تمامی تنظیمات رو در یک فایل واحد ذخیره سازی کنیم اما چون دیروز وقت نداشتم ، امروز اینکار را انجام میدهیم :

برای ذخیره سازی تنظیمات در یک فایل واحد از کدهای زیر استفاده نمایید :

[CSHARP]
Pashmak.XmlDoc = new XmlDocument();
XmlElement XRootA = Pashmak.XmlDoc.CreateElement("Pashmak");
XmlElement XRootB = Pashmak.XmlDoc.CreateElement("Softafzar");
{
XmlElement XItems = Pashmak.XmlDoc.CreateElement("Items");
for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)
{
XmlElement XItem = Pashmak.XmlDoc.CreateElement("Item");
XmlElement XCLM1 = Pashmak.XmlDoc.CreateElement("Column1");
XmlElement XCLM2 = Pashmak.XmlDoc.CreateElement("Column2");
XCLM1.InnerText = dataGridView1.Rows[i].Cells[0].Value.ToString();
XCLM2.InnerText = dataGridView1.Rows[i].Cells[1].Value.ToString();
XItem.AppendChild(XCLM1);
XItem.AppendChild(XCLM2);
XItems.AppendChild(XItem);
}
XRootB.AppendChild(XItems);
XRootA.AppendChild(XRootB);
}


XmlElement listBoxP = Pashmak.XmlDoc.CreateElement("ListBoxes");
{
for (int i = 0; i < listBox1.Items.Count; i++)
{
XmlElement Item = Pashmak.XmlDoc.CreateElement("Item");
Item.InnerText = listBox1.Items[i].ToString();
listBoxP.AppendChild(Item);
}
XRootA.AppendChild(listBoxP);
}


XmlElement XRootC = Pashmak.XmlDoc.CreateElement("TextBoxes");
{
XmlElement txtbox1 = Pashmak.XmlDoc.CreateElement("textBox1");
txtbox1.InnerText = textBox1.Text;
XmlElement txtbox2 = Pashmak.XmlDoc.CreateElement("textBox2");
txtbox2.InnerText = textBox2.Text;

XRootC.AppendChild(txtbox1);
XRootC.AppendChild(txtbox2);
XRootA.AppendChild(XRootC);
}


XmlElement XRootD = Pashmak.XmlDoc.CreateElement("RadioButton");
{
XmlElement radiobtn1 = Pashmak.XmlDoc.CreateElement("radioButton1");
radiobtn1.InnerText = radioButton1.Checked.ToString();
XmlElement radiobtn2 = Pashmak.XmlDoc.CreateElement("radioButton2");
radiobtn2.InnerText = radioButton2.Checked.ToString();

XRootD.AppendChild(radiobtn1);
XRootD.AppendChild(radiobtn2);
XRootA.AppendChild(XRootD);
}

XmlElement XRootE = Pashmak.XmlDoc.CreateElement("CheckBoxes");
{
XmlElement chbox1 = Pashmak.XmlDoc.CreateElement("checkBox1");
chbox1.InnerText = checkBox1.Checked.ToString();
XmlElement chbox2 = Pashmak.XmlDoc.CreateElement("checkBox2");
chbox2.InnerText = checkBox2.Checked.ToString();

XRootE.AppendChild(chbox1);
XRootE.AppendChild(chbox2);
XRootA.AppendChild(XRootE);
}

Pashmak.XmlDoc.AppendChild(XRootA);


SaveFileDialog sd = new SaveFileDialog();
sd.Filter = "SoftAfzar Database (*.db)|*.db";
Random randomize = new Random();
sd.FileName = "SoftAfzar Database" + randomize.Next();
string filePath = "";
if (sd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
StreamWriter save = new StreamWriter(sd.FileName);
save.Write(Pashmak.XmlDoc.InnerXml);
filePath = sd.FileName;
label1.Text = "Database Saved on\n" + filePath;
save.Close();
}
[/CSHARP]

همچنین برای بازیابی آنها ، از کد زیر استفاده کنید :
[CSHARP]
OpenFileDialog od = new OpenFileDialog();
od.Filter = "SoftAfzar Database (*.db)|*.db";
od.FileName = "SoftAfzar Database.db";
if (od.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
StreamReader loaddb = new StreamReader(od.FileName);
string data = loaddb.ReadToEnd();
loaddb.Close();
Pashmak.XmlDoc = new XmlDocument();
try
{
Pashmak.XmlDoc.LoadXml(data);
}
catch
{
return;
}
if (Pashmak.XmlDoc == null || Pashmak.XmlDoc.InnerXml == "")
return;
XmlNode XmlRoot = Pashmak.XmlDoc.GetElementsByTagName("Pashmak")[0];
XmlNodeList XnL = Pashmak.XmlDoc.ChildNodes;
for (int i = 0; i < XmlRoot.ChildNodes.Count; i++)
{

XmlNode XmlRChild = XmlRoot.ChildNodes[i];
switch (XmlRChild.Name)
{
case "Softafzar":
if (XmlRChild.SelectSingleNode("//Pashmak/Softafzar/Items") != null &&
XmlRChild.SelectSingleNode("//Pashmak/Softafzar/Items/Item") != null)
{
XmlNodeList ItemsList = XmlRChild.SelectNodes("//Pashmak/Softafzar/Items/Item");
for (int j = 0; j < ItemsList.Count; j++)
{
string A = "", B = "";
for (int t = 0; t < ItemsList[j].ChildNodes.Count; t++)
{
if (ItemsList[j].ChildNodes[t].Name == "Column1")
A = ItemsList[j].ChildNodes[t].InnerText;
else if (ItemsList[j].ChildNodes[t].Name == "Column2")
B = ItemsList[j].ChildNodes[t].InnerText;
}
dataGridView1.Rows.Add(A, B);
}
}
break;
case "ListBoxes":
if (XmlRChild.SelectSingleNode("//Pashmak/ListBoxes/Item") != null)
{
XmlNodeList ItemsList = XmlRChild.SelectNodes("//Pashmak/ListBoxes/Item");
for (int j = 0; j < ItemsList.Count; j++)
{
string A = "";
for (int t = 0; t < ItemsList[j].ChildNodes.Count; t++)
{
A = ItemsList[j].ChildNodes[t].InnerText;
}
listBox1.Items.Add(A);
}
}
break;
case "TextBoxes":
if (XmlRChild.SelectSingleNode("//Pashmak/TextBoxes") != null)
{
XmlNodeList ItemsList = XmlRChild.ChildNodes;
for (int j = 0; j < ItemsList.Count; j++)
{
switch (ItemsList[j].Name)
{
case "textBox1":
textBox1.Text = ItemsList[j].InnerText;
break;
case "textBox2":
textBox2.Text = ItemsList[j].InnerText;
break;
}
}

}
break;
case "RadioButton":
if (XmlRChild.SelectSingleNode("//Pashmak/RadioButton") != null)
{
XmlNodeList ItemsList = XmlRChild.ChildNodes;
for (int j = 0; j < ItemsList.Count; j++)
{
switch (ItemsList[j].Name)
{
case "radioButton1":
radioButton1.Checked = bool.Parse(ItemsList[j].InnerText);
break;
case "radioButton2":
radioButton2.Checked = bool.Parse(ItemsList[j].InnerText);
break;
}
}
}
break;
case "CheckBoxes":
if (XmlRChild.SelectSingleNode("//Pashmak/CheckBoxes") != null)
{
XmlNodeList ItemsList = XmlRChild.ChildNodes;
for (int j = 0; j < ItemsList.Count; j++)
{
switch (ItemsList[j].Name)
{
case "checkBox1":
checkBox1.Checked = bool.Parse(ItemsList[j].InnerText);
break;
case "checkBox2":
checkBox2.Checked = bool.Parse(ItemsList[j].InnerText);
break;
}
}
}
break;
}
}
}
[/CSHARP]

منبع : سافت افزار

کدنویس : رامتین جوکار
کپی برداری از کدهای بالا فقط با ذکر نام سافت افزار قانونی و مجاز میباشد.

پاسخ
ایجاد موضوع جدید   پاسخ به موضوع  

موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
Note کتاب آموزش Parse کردن یک خبر خوان وردپرسی برای ویندوزفون The Arrow 0 976 23-04-2015 ساعت 09:24
آخرین ارسال: The Arrow
Note سوال ساخت تقویم فارسی در ویندوز 8.1 The Arrow 2 987 16-01-2015 ساعت 00:32
آخرین ارسال: The Arrow
Note دیتابیس SQLite در سی شارپ The Arrow 3 2,421 07-11-2014 ساعت 22:40
آخرین ارسال: VBProgrammer
Note FileAssociation در سی شارپ The Arrow 1 566 05-11-2014 ساعت 12:32
آخرین ارسال: SOFTAFZAR
Note آموزش کامل سی شارپ (ویدئو) xMAN 2 682 02-10-2014 ساعت 12:50
آخرین ارسال: xMAN
Note explorer سی شارپ cMan 1 484 30-08-2014 ساعت 12:07
آخرین ارسال: SOFTAFZAR
Note پیدا کردن متن در سی شارپ arfanz 7 876 27-08-2014 ساعت 01:10
آخرین ارسال: The Arrow
Note برنامه نویسی موازی با سی شارپ xMAN 0 450 05-08-2014 ساعت 12:01
آخرین ارسال: xMAN
Note جستجو در یک متن در سی شارپ arfanz 12 2,235 16-07-2014 ساعت 09:32
آخرین ارسال: Stack OverFlow
Note مخفف کنترلهای سی شارپ mshayan 2 846 15-07-2014 ساعت 13:32
آخرین ارسال: mshayan

کاربرانِ درحال بازدید از این موضوع:   1 مهمان