ذخیره و بازیابی تمامی اطلاعات در XML سی شارپ

بازدید29.5kپست ها6آخرین فعالیت10 سال پیش
0
0

درود به کاربران ، مدیران و همراهان گرامی سافت افزار،

در اینجا قرار است که با یاری همدیگر ، کدهای ذخیره ی اطلاعات در فایل 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
0

برای ذخیره ی 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]

0

برای ذخیره ی 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]

0

برای ذخیره ی 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
0

برای ذخیره ی 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]

0

برای ذخیره ی 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]

0

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

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

[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]

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

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

سوال برنامه نویسی دارید؟

ندونستن عیب نیست، نپرسیدن چرا!

خوش آمدید

برای طرح سوال، ایجاد بحث و فعالیت در سایت نیاز است ابتدا وارد حساب کاربری خود شوید. در صورتی که هنوز عضو سایت نیستید میتوانید در عرض تنها چند ثانیه ثبت نام کنید.