خانه » دانشنامه » آموزشی » کار با XML در C# و ASP.NET

کار با XML در C# و ASP.NET

امتیاز شما به این پست !

C XML - کار با XML در C# و ASP.NET

کار با XML در C# و ASP.NET

در این پست کار با XML را در ASP.NET و سی شارپ را توضیح خواهیم داد که قبل از آن توضیحات مختصری در مورد XML و فواید آن گفته می شود و بعد به سراغ کد ها می رویم.

XML  یک زبان نشانه گذاری است مانند HTML که هر داده (رکورد) می تواند زیر مجموعه ای داشته باشد. مثال :

<Record>

      <name> نام </name>

      <family>فامیلی</family>

</Record>

در کد بالا یک رکود به نام Record داریم که دارای دوفیلد Name و Family است به هر داده ای که داخل <> باشد در Node یا Element گفته می شود ، وما با استفاده از XML  جدول Post و تنظیمات و محتویات بلاک را ذخیره نمودیم و علت آن این است که دارای سرعت بسیار زیاد نسبت به  SQL Server عمل می کند و با انجام این عمل از دیتابیس کمتر استفاده کرده و تاحدودی سرعت تبادل اطلاعات را بالا می بریم.

برای مشاهده ادامه کار با XML در C# و ASP.NET به ادامه مطلب بروید

XML مورد استفاده برای کدهایی که در ادامه توضیح می دهیم بصورت زیر است.

<?xml version=”1.0″ encoding=”utf-8″?>

<postdata>

  <blocknode>

    <title> عنوان  </title>

    <cat> برنامه نویسی</cat>

    <writer>kazem  sadeghi firozjah</writer>

    <body> متن شماره 1</body>

    <post> متن ادامه مطلب</post>

    <date>13\4\1392  9:48</date>

    <view>1</view>

    <enable>yes</enable>

  </blocknode>

</postdata>

 

کد افزودن رکود یا Node یا Element :

XDocument doc = XDocument.Load(Server.MapPath(“~/Database/post.xml”));

                doc.Element(“postdata”).Add(new XElement(“blocknode”,

                new XElement(“title”, TextBox1.Text),

                new XElement(“cat”, DropDownList2.Text),

                new XElement(“writer”, TextBox2.Text),

                new XElement(“body”,CKEditorControl1.Text),

                new XElement(“post”, CKEditorControl2.Text),

                new XElement(“date”, TextBox3.Text),

                new XElement(“view”, “0”),

                new XElement(“enable”, DropDownList3.SelectedItem.Value)));

                doc.Save(Server.MapPath(“~/Database/post.xml”));

در کد بالا ما از LINQ استفاده نمودیم و در اولین خط فایل XMLخود را فراخوانی کردیم و در خط بعد از رکود Postdata یک رکورد جدید به نام Blocknode می سازیم که دارای نود های Title,.. می باشد و این عمل را تا آخرین نود انجام می دهیم و در خط آخر فایل خود را ذخیره می کنیم.

 

کد ویرایش رکود یا Node یا Element :

XDocument Doc = XDocument.Load(Server.MapPath(“~/Database/post.xml”));

var items = from i in Doc.Descendants(“blocknode”)

                                where i.Element(“title”).Value == RadComboBox1.Text

                                select i;

                    foreach (var item in items)

                    {

                        item.Element(“title”).SetValue(RadComboBox1.Text);

                        item.Element(“body”).SetValue(CKEditorControl5.Text);

                        item.Element(“post”).SetValue(CKEditorControl6.Text);

                        item.Element(“cat”).SetValue(DropDownList4.Text);

                    }

                    Doc.Save(Server.MapPath(“~/database/post.xml”));

در کد فوق یک Query با LINQ نوشتیم که از زیرمجموعه های Blocknode زمانی که  مقدار عنصر Title برابر با مقدار Combobox باشد انتخاب کند i (یک متغیر بعد fromتعریف می شود و داده ها در آن ذخیره می شوند) را انتخاب کند و یک Foreach گذاشتیم تا به تعداد رکورد های مورد نظر حلقه ایجاد(برای ویرایش این حلقه یک بار بیشتر اجرا نمی شود) در این حلقه نودهایی که قرار است مقدار آنها تغییر کند را قرار دادیم.

 

کد حذف رکود یا Node یا Element :

var delquery = from data in Doc.Descendants(“blocknode”)

              where data.Element(“title”).Value == RadComboBox1.Text

              select data;

                    foreach (XElement data in delquery.ToList())

                    {

                        data.Remove();

                    }

                    Doc.Save(Server.MapPath(“~/database/post.xml”));

در دستور فوق هم مانند دستور قبلی عمل کردیم ولی دستور داخل Foreach را تغییر نمودیم.

 

کد نمایش رکود یا Node یا Element (مقادیر به صورت جداگانه) :

var qury = from p in Doc.Descendants(“node”)

              where p.Element(“title”).Value==???

                           select p;

                foreach (var item in qury)

                {

                    //site title

                    Label1.Text=item.Element(“title”).Value;

              }

در کد بالا مقدار Title در Label1  ریخته می شود.

کد نمایش رکود یا Node یا Element (قرار دادن در Gridview یا …) :

var qury = (from p in Doc.Descendants(“node”)

           select p).ToList;

Gridview1.Datasource=qury;

Gridview1.Databind();

برای کار با XML باید کد های زیر در قسمت رفرنس ها اضافه کنید.

using System.Xml.Linq;
using System.Xml;

 

تهیه شده توسط کاظم صادقی فیروزجاه

15 - تلگرام

ارسال دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

این سایت از اکیسمت برای کاهش هرزنامه استفاده می کند. بیاموزید که چگونه اطلاعات دیدگاه های شما پردازش می‌شوند.