رفتن به مطلب

نحوه ذخیره اطلاعات در فایل xml


ماتینا

ارسال های توصیه شده

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

ولی بهترین راه استفاده از فایل xml است. این نوع فایل قابلیت ذخیره اطلاعات را با هر قالبی که کاربر خواست دارد. در حقیقت می توان یک سری رکورد یا هر اطلاعات قالب مندی را در آن ذخیره کرد. به عنوان مثال می توانید تاریخ انقضا برنامه خود را به صورت رمز در آورده و در یک فایل xml قرار دهید.

در سی شارپ برای کار با این نوع فایل امکانات ویژه ای قرار دارد. که با ذکر یک مثال آنها را شرح می دهیم.

فرض کنید که فرمی طراحی کرده ایم که شامل دو قسمت کلی است. یکی نام و نام خانوادگی کاربر و دیگری نام کاربری و تاریخ انقضا نام کاربری.

ابتدا دکمه ای قرار می دهیم که بعد از ورود اطلاعات این دو بخش یک فایل xml برای ما در مسیر خاصی ایجاد کند.

XmlTextWriter XmlWrt = new XmlTextWriter("AppXml.xml", System.Text.Encoding.UTF8);

XmlWrt.Formatting = Formatting.Indented;

XmlWrt.WriteStartDocument();

XmlWrt.WriteStartElement("configuration");

XmlWrt.WriteStartElement("general");

XmlWrt.WriteElementString("Name", "Name of User");

XmlWrt.WriteElementString("Familly", "Familly of User");

XmlWrt.WriteEndElement();

XmlWrt.WriteStartElement("Info");

XmlWrt.WriteElementString("User", "UserName");

XmlWrt.WriteElementString("DateExp", "Date of Expire");

XmlWrt.WriteEndElement();

XmlWrt.WriteEndElement();

XmlWrt.WriteEndDocument();

XmlWrt.Close();

ابزاری XmlTextWriter برای ایجاد یا نوشتن در یک فایل Xlm کاربرد دارد. در این مثال ن.ع فرمت اطلاعات را از نوع Utf8 انتخاب کرده ایم. و از برنامه خواستیم تا اطلاعات یا رکورد ا را به صورت تو در تو (Indented) یا سطح بندی شده ذخیره بکند.

WriteStartDocument(): برای شروع کار یک بار باید نوشته شود.

WriteEndDocument() : برای اعلام اتمام کار باید ذکر شود.

WriteStartElement(String) : برای ایجاد یک سطح یا شاخه مورد استفاده قرار می گیرد.

WriteElementString(FieldName,StringValue) : برای مقدار دهی فیلدها با ذکر نام آنها بکار می آید.

WriteEndElement() : برای بستن هر شاخه یا سطح مورد استفاده قرار می گیرد.

XmlWrt.Close() برای آزاد کردن شی مورد نظر مورد استفاده قرار می گیرد.

با اجرای این دستور در مسیر جاری فایلی با نام AppXml.xml ایجاد می شود و اطلاعات زیر در آن ذخیره می شود.

Name of User

Familly of User

UserName

Date of Expire

 

به هر کدام از اطلاعاتی که داخل علامتهای بزرگتر و کوچکتر (تگ) هستند، یک گره (Node) می گویند.
لینک به دیدگاه

نحوه بروز کردن تغییرات در فایل
XML

XmlDocument XmlDoc = new XmlDocument();

XmlDoc.Load("AppXml.xml");

XmlNode nameNode = XmlDoc.SelectSingleNode("configuration/general/Name");

XmlNode famillyNode = XmlDoc.SelectSingleNode("configuration/general/Familly");

XmlNode userNode = XmlDoc.SelectSingleNode("configuration/Info/User");

XmlNode dateNode = XmlDoc.SelectSingleNode("configuration/Info/DateExp");

nameNode.InnerText = "new name";

famillyNode.InnerText = "new familly";

userNode.InnerText = "new user name";

dateNode.InnerText = "new date";

XmlDoc.Save("AppXml.xml");

ابزار XmlDocument به کمک متد load اطلاعات فایل خاصی را برای ما به کمک گره هایی که به تگ ها اختصاص می دهیم بر می گرداند.

XmlNode : برای اختصاص داده تگ به نود به کار می رود. مشاهده می کنید که برای دسترسی به یک گره خاص باید تمامی سطوح را تک به تک طی کنیم تا به گره خاص برسیم.
لینک به دیدگاه

نحوه خواندن اطلاعات از فایل XML

string str = "";

 

XmlTextReader XmlRdr = new XmlTextReader("AppXml.xml");

 

while(!XmlRdr.EOF)

 

{

 

if (XmlRdr.MoveToContent() == XmlNodeType.Element)

 

switch (XmlRdr.Name)

 

{

 

case "Name":

 

str=XmlRdr.ReadElementString();

 

break;

 

case "Familly":

 

str+= "\n"+ XmlRdr.ReadElementString();

 

break;

 

case "User":

 

str+= "\n"+ XmlRdr.ReadElementString();

 

break;

 

case "DateExp":

 

str+= "\n"+ XmlRdr.ReadElementString();

 

break;

 

default:

 

XmlRdr.Read();

 

break;

 

}

 

else

 

XmlRdr.Read();

 

}

به کمک تابع XmlTextReader می توان اطلاعات را از فایل خواند.

MoveToContent() : به کمک این متد می توان تعریف کرد که فقط به اطلاعات فیلدها دسترسی داشت، و دیگر برای دسترسی به اطلاعات نیازی به پیمودن مسیر کامل سطوح نیست.

while(!XmlRdr.EOF) : به کمک این دستور، مشخص کرده ایم که تا زمانی که به انتهای فایل(End Of File) نرسیده است (تا زمانی که فیلدی باقی مانده) عملیات مورد نظر را انجام بده.

لینک به دیدگاه

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...