ماتینا 4434 اشتراک گذاری ارسال شده در 8 بهمن، ۱۳۹۱ فرض کنید برنامه ای نوشته اید که نیاز دارید یک سری اطلاعات رو از برنامه گرفته و در خارج از برنامه ذخیره کنید. شاید اولین چیزی که به ذهنتان برسد، کار با بانک ها باشد و یا استفاده از فایل متنی. ولی بهترین راه استفاده از فایل 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) می گویند. 1 لینک به دیدگاه
ماتینا 4434 مالک اشتراک گذاری ارسال شده در 8 بهمن، ۱۳۹۱ نحوه بروز کردن تغییرات در فایل 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 : برای اختصاص داده تگ به نود به کار می رود. مشاهده می کنید که برای دسترسی به یک گره خاص باید تمامی سطوح را تک به تک طی کنیم تا به گره خاص برسیم. 1 لینک به دیدگاه
ماتینا 4434 مالک اشتراک گذاری ارسال شده در 8 بهمن، ۱۳۹۱ نحوه خواندن اطلاعات از فایل 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) نرسیده است (تا زمانی که فیلدی باقی مانده) عملیات مورد نظر را انجام بده. 2 لینک به دیدگاه
ارسال های توصیه شده