آموزش خواندن فایل XML در سی شارپ بصورت مستقیم به زبان ساده

چگونه فایل XML را با سی شارپ بخوانیم؟ در این پست ، با خواندن فایل XML در سی شارپ توسط LINQ To XML آشنا خواهید شد. زیبایی کار در اینجاست که شما با استفاده از زبان SQL دارید یک فایل متنی را مورد خطاب قرار می دهید و دیگر در اینجاخبری از Table نیست.

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران
سرفصل های این مطلب
  1. نکات

نکات

1- هر تگ در فایل XML یک Node نام دارد . برای خواندن یک Node به صورت زیر عمل شده است : (جستجو) برای مثال Name یا Contact هر کدام یک Tag هستند و Name از فرزندان Contact است . هر تگ ممکن است یک Attribute یا صفت داشته باشد . برای مثال در فایل برنامه، یک صفت به نام Type با مقادیر Home یا Mobile برای تگ Phone تعریف شده است . در نهایت ، کد مربوط یه جستجو عبارت است از :

string _Name = txtName.Text;
string _Family = txtFamily.Text;
var phone = from x in 
 document.Elements("Phonebook").Elements("Contact")
 from p in x.Elements("Phone")
 where
 x.Element("Name").Value.ToString() == _Name &&
 x.Element("Family").Value.ToString() == _Family
 && p.Attribute("Type").Value =="Home"
 select
 p.Value.ToString();

همانطور که در بالا مشهود است ، دو عدد select زده ایم ، یک بر روی Contact ها و دیگر بر روی Phone ها، و آن Contact ی که نامش با نامی که کاربر وارد کرده است و فامیلشان با فامیلی که کاربر وارد کرده است را و نیز شماره تلفن ثابتش را انتخاب می کنیم و در Phone ذخیره می کنیم.

2- برای ذخیره کرده به صورت زیر عمل می کنیم :

XElement XName = new XElement("Name");
XElement XFamily = new XElement("Family");
XElement XPhone = new XElement("Phone");
XElement XMobile = new XElement("Phone");

XMobile.SetAttributeValue("Type", "Mobile");
XPhone.SetAttributeValue("Type", "Home");

XName.Value = txtName.Text;
XFamily.Value = txtFamily.Text;
XPhone.Value = txtPhone.Text;
XMobile.Value = txtMobile.Text;

XElement ContactNode = new XElement("Contact");
ContactNode.Add(XName);
ContactNode.Add(XFamily);
ContactNode.Add(XPhone);
ContactNode.Add(XMobile);
            

document.Descendants("Phonebook").Last().Add(ContactNode);
MessageBox.Show("Data saved", "OK", 
      MessageBoxButtons.OK, MessageBoxIcon.Information);

document.Save(Application.StartupPath + "\\Contacts.xml");

همانطور که در کد فوق مشخص است ، یک مخاطب جدید به صورت Bottom Up ایجاد شده است. یعنی اول فرزندان آن ایجاد شده است و بعد کل مخاطب اضافه شده است . یعنی در چهار خط اول ، مشخصات یا فرزندان درخت ایجاد شده اند سپس یک گره که مانند ریشه عمل میکتد و این چهار فرزند را در برمیگیرد ، ایجاد میشود و این گره در فایل اصلی اضافه میشود


نظرات