آموزش نوشتن XML با استفاده از کلاس XmlWriter در زبان C#

آموزش نحوه خوانمدن فایل های XML پرداختیم، اما در این درس و درس های بعدی قصد داریم تا بر روی نوشتن فایل های XML، کار کنیم. از آنجایی که زبان XML از متن ساده تشکیل شده است، شما می توانید به سادگی تگ های XML را درون یک فایل نوشته و سپس پسوند یا extensim با مقدار XML را به آن بدهید، اما مطمئن تر است که انجام این کار را به دست چهارچوب کاری .NET بسپارید.
همانند خواندن فایل های XML، نوشتن این فایل ها هم از طریق دو روش زیر ممکن است :

نوشتن فایل XML با استفاده از XmlWriter
نوشتن فایل XML با استفاده از XmlDocument
در این درس بر روی نوشتن فایل های XML با استفاده از XmlWriter تمرکز کرده و در درس بعدی به آموزش نحوه کار با XmlDocument خواهیم پرداخت.
تفاوت بین دو روش فوق در نوشتن فایل های XML، مربوط به میزان استفاده از حافظه (memory consuming) می باشد. XmlWriter به مراتب حافظه کمتری از XmlDocument استفاده کرده و این مسئله در هنگام نوشتن فایل های بزرگ XML، تفاوت زیادی را ایجاد خواهد کرد. تفاوت مهم دیگر این است که با استفاده از XmlDocument، شما می توانید همزمان یک فایل XML موجود را خوانده، آن را تغییر داده و سپس تغییرات ایجاد شده را بازنویسی کنید. اما در هنگام استفاده از XmlWriter، بایستی کل فایل XML را یکجا از روی چرک نویس بر روی فایل اصلی بنویسید. البته مورد دوم یک مشکل عمده نیست، اما انتخاب هر یک از روش های فوق بستگی به کار شما و ترجیحات شخصی دارد.
در مثال عملی زیر، کد نوشتن فایل XML با استفاده از کلاس XmlWriter قرار داده شده است :

using System;
using System.Text;
using System.Xml;
 
namespace WritingXml
{
    class Program
    {
        static void Main(string[] args)
        {
            XmlWriter xmlWriter = XmlWriter.Create("test.xml");
 
            xmlWriter.WriteStartDocument();
            xmlWriter.WriteStartElement("users");
 
            xmlWriter.WriteStartElement("user");
            xmlWriter.WriteAttributeString("age", "42");
            xmlWriter.WriteString("John Doe");
            xmlWriter.WriteEndElement();
 
            xmlWriter.WriteStartElement("user");
            xmlWriter.WriteAttributeString("age", "39");
            xmlWriter.WriteString("Jane Doe");
 
            xmlWriter.WriteEndDocument();
            xmlWriter.Close();
        }
    }
}

کد فوق، فایل XML زیر را تولید خواهد کرد :


  John Doe
  Jane Doe
    

در کد مثال فوق، ما با ایجاد یک نسخه جدید از کلاس XmlWriter کار را آغاز کرده ایم. کلاس فوق حداقل یک پارامتر را به عنوان ورودی دریافت می کند که ادرس محل ذخیره شدن فایل XML می باشد، اما پارامترهای دیگری را نیز می توان برای اهداف دیگر ارسال نمود. کار بعدی که بایستی انجام دهیم، فراخوانی متد Write Start Document() است. پس از آن، المنت آغازین با نام “user” را می نویسیم، کلاس XmlWriter Class متن فوق را به صورت تغییر می دهد. قبل از بستن تگ فوق، یک تگ جدید با مقدار “user” را به عنوان فرزند یا child تگ user ایجاد خواهیم کرد. در مراحل بعدی به ترتیب با استفاده از متد WriteAttribute String()، یک خاصیت یا attribute را با نام age به المنت مورد نظر اضافه می کنیم. همچنین با استفاده از متد WriteString()، متن درونی یا inner text را برای تگ تولید خواهیم کرد. در پایان هم با فراخوانی متد WriteEndElement متد شده ایم که تگ المنت “user” را در انتها بسته ایم.
پروسه فوق می تواند برای اضافه کردن المنت های “user” بعدی نیز تکرار شود، به جز این که متد WriteEndElement() را مثل سری اول فراخوانی نمی کنیم. درواقع، این متد بایستی دو بار فراخوانی شود، زیرا دارای المنت باز “user” هستیم، اما کار فوق را کلاس XmlWriter در هنگام بستن فایل با فراخوانی متد WriteEndElement() انجام می دهد.
برای نوشتن اطلاعات فایل XML بر روی هارد دیسک، متد Close() فراخوانی خواهد شد. پس از فراخوانی این متد، می توانید فایل test.xml را باز کنید، این فایل درون پوشه ای خواهد بود که فایل EXE پروژه تان قرار داد و معمولا پوشه bin/debug است.

شاید این مطالب را هم دوست داشته باشید

یک پاسخ

  1. Bryantreaps گفت:

    Hi, srajayi.ir

    I’ve been visiting your website a few times and decided to give you some positive feedback because I find it very useful. Well done.

    I was wondering if you as someone with experience of creating a useful website could help me out with my new site by giving some feedback about what I could improve?

    You can find my site by searching for “casino gorilla” in Google (it’s the gorilla themed online casino comparison).

    I would appreciate if you could check it out quickly and tell me what you think.

    casinogorilla.com

    Thank you for help and I wish you a great week!

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.