PDA

View Full Version : نحوه استفاده از XML بجای INI



gilsoft
شنبه 29 بهمن 1390, 04:38 صبح
سلام خدمت اساتید و دوستان محترم
همانگونه که از عنوان تاپیک پیداست .. میخوام بجای استفاده از فایلهای INI ، از فایلهای XML برای ذخیره تنظیمات نرم افزارم استفاده کنم :متفکر:
تو سایت خیلی جستجو کردم، ولی به خواسته ام نرسیدم :متفکر:
این کار رو صرفا بخاطر این که کاربران عادی بسادگی نتونند به تنظیمات نرم افزار دسترسی پیدا کنند ! میخوام انجام بدم ... :چشمک:
لطفا کمکم کنید (من کاربر شیطون زیاد دارم :چشمک:)

1 - نحوه ایجاد و ذخیره در فایل XML ؟؟
2 - نحوه بازکردن و خواندن از فایل XML ؟؟

کد زیر فقط بعنوان مثال هستش :


[Database]
DataSource=HOME
Catalog=Razdar1_1390

[Login]
User=Admin
Year=1390

sinaone1
شنبه 29 بهمن 1390, 07:59 صبح
اینا رو ببینی کارت حله :
http://msdn.microsoft.com/en-us/library/cc189056(v=vs.95).aspx

http://msdn.microsoft.com/en-us/library/cc189085(v=vs.95).aspx

فرید نجفلو
شنبه 29 بهمن 1390, 13:17 عصر
دوست عزیز شما چرا خودتو به زحمت میندازی دات نت دقیقا همین کار رو واسه شما به صورت منسجم انجام داده و دوره INI ها خیلی وقته تموم شده!
شما برو تو properties پروژتون و برگ settings و هر چیزی رو که می خوای ذخیره کنی اضافه کن (از یک متن ساده گرفته تا کانکشن استرینگ و هر نوع آبجکتی که بخواهید) و شما دیگه کاری به کار XML ندارید
شما می تونید تنظیمات رو به صورت برنامه نویسی شده با کد زیر مدیریت کنید:
My.Settings.LastStartTime = Now()
LastStart = My.Settings.LastStartTime

فقط باید Scope تنظیمات رو روی User قرار بدین چون در حالت Application فقط خواندنی میشه!

sinaone1
شنبه 29 بهمن 1390, 21:46 عصر
دوست عزیز البته معمولا کارهایی که مربوط به امنیت برنامه می شه رو بهتره توی دیتابیس اونم کدشده ذخیره کنی

gilsoft
دوشنبه 01 اسفند 1390, 00:35 صبح
دوست عزیز شما چرا خودتو به زحمت میندازی دات نت دقیقا همین کار رو واسه شما به صورت منسجم انجام داده و دوره INI ها خیلی وقته تموم شده!
شما برو تو properties پروژتون و برگ settings و هر چیزی رو که می خوای ذخیره کنی اضافه کن (از یک متن ساده گرفته تا کانکشن استرینگ و هر نوع آبجکتی که بخواهید) و شما دیگه کاری به کار XML ندارید
شما می تونید تنظیمات رو به صورت برنامه نویسی شده با کد زیر مدیریت کنید:
My.Settings.LastStartTime = Now()
LastStart = My.Settings.LastStartTime

فقط باید Scope تنظیمات رو روی User قرار بدین چون در حالت Application فقط خواندنی میشه!
سلام دوست عزیز
ممنون از توجه تون
نرم افزارم به گونه ای طراحی شده .. که ترجیح میدم بصورت چند فایل مجزا (که تعدادی از آنها روی Server و تعدادی دیگر روی Station هستش) اونا رو داشته باشم.
اگه براتون امکان داره یه سورس کوچیک (نه در حد پروژه) برای ایجاد/ذخیره ... بازکردن/خواندن XML برام بزارید، خیلی ممنون میشم ...
چون تاکنون سر و کارم با XML نبود ، این تاپیک رو زدم

از دوست عزیز sinaone1 (http://barnamenevis.org/member.php?71516-sinaone1) هم ممنونم

فرید نجفلو
دوشنبه 01 اسفند 1390, 02:26 صبح
سلام دوست عزیز
ممنون از توجه تون
نرم افزارم به گونه ای طراحی شده .. که ترجیح میدم بصورت چند فایل مجزا (که تعدادی از آنها روی Server و تعدادی دیگر روی Station هستش) اونا رو داشته باشم.
اگه براتون امکان داره یه سورس کوچیک (نه در حد پروژه) برای ایجاد/ذخیره ... بازکردن/خواندن XML برام بزارید، خیلی ممنون میشم ...
چون تاکنون سر و کارم با XML نبود ، این تاپیک رو زدم

از دوست عزیز sinaone1 (http://barnamenevis.org/member.php?71516-sinaone1) هم ممنونم


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

پسوند فایل رو از xml به یه چیز دیگه تغییر بدین (مثلا به Set)
واسه اینکه امنیت کامل بشه می تونید اول اطلاعات رو از xmlDocument به صورت stream دریافت بعد کد گذاری کرده و در فایل ذخیره کنید
موقع بازیابی هم می تونید فایل رو به صورت stream خونده و از حالت کد شده درآورده بعد در xmlDocument لود کنید


Private SettingPath As String = ".\AppSettings.xml"
Private Sub CreateNewSettingFile()
Dim xDoc As New XmlDocument
Dim xPI As XmlProcessingInstruction
Dim xElmntRoot As XmlElement
xPI = xDoc.CreateProcessingInstruction("xml", "version='1.0'")
xDoc.AppendChild(xPI)
xElmntRoot = xDoc.CreateElement("Settings")
xDoc.AppendChild(xElmntRoot)
xDoc.Save(SettingPath)
End Sub
Private Sub AddNewSetting(NewSettingName As String, Optional value As String = "")
Dim xDoc As New XmlDocument
xDoc.Load(SettingPath)
Dim xElmntRoot As XmlElement
xElmntRoot = xDoc.DocumentElement
Dim NewSetting As XmlElement
NewSetting = CType(xElmntRoot.AppendChild(xDoc.CreateElement(Ne wSettingName)), XmlElement)
NewSetting.InnerText = value
xDoc.Save(SettingPath)
End Sub
Private Sub EditSetting(SettingName As String, NewValue As String)
Dim xDoc As New XmlDocument
xDoc.Load(SettingPath)
Dim xElmntRoot As XmlElement
xElmntRoot = xDoc.DocumentElement
Dim ExistSetting As XmlElement
ExistSetting = CType(xElmntRoot.SelectSingleNode(SettingName), XmlElement)
ExistSetting.InnerText = NewValue
xDoc.Save(SettingPath)
End Sub
Private Sub RemoveSetting(SettingName As String)
Dim xDoc As New XmlDocument
xDoc.Load(SettingPath)
Dim xElmntRoot As XmlElement
xElmntRoot = xDoc.DocumentElement
Dim ExistSetting As XmlNode
ExistSetting = xElmntRoot.SelectSingleNode(SettingName)
xElmntRoot.RemoveChild(ExistSetting)
xDoc.Save(SettingPath)
End Sub

fakhravari
سه شنبه 08 فروردین 1391, 12:06 عصر
سلام
کد C# ندارید؟

Hybrid
سه شنبه 08 فروردین 1391, 13:47 عصر
سلام
کد C# ندارید؟

به سایت زیر سری بزنید راحت کد ها رو تبدیل کنید :

http://www.developerfusion.com/tools/convert/vb-to-csharp (http://www.developerfusion.com/tools/convert/vb-to-csharp/)

موفق باشید./

ROSTAM2
سه شنبه 08 فروردین 1391, 14:41 عصر
پیشنهاد فوق العاده
شما که کاربر شیطون زیاد دارید
اگه امنیت بیشتر می خوای بهتر تمام اطلاعات مهم رو تو منبع اطلاعات (Database) ذخیره کنی یه کد رمز هم براش تعیین کنی!!!!!

Hybrid
سه شنبه 08 فروردین 1391, 15:01 عصر
سلام
کد C# ندارید؟

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

موفق باشید./

فرید نجفلو
سه شنبه 08 فروردین 1391, 15:17 عصر
پیشنهاد فوق العاده
شما که کاربر شیطون زیاد دارید
اگه امنیت بیشتر می خوای بهتر تمام اطلاعات مهم رو تو منبع اطلاعات (Database) ذخیره کنی یه کد رمز هم براش تعیین کنی!!!!!

امنیت در حد تیم ملی!!!
واسه SQL Server که اگه نام کاربری و کلمه عبور داشته باشن(که صاحب سیستم صد در صد داره) می ره از همونجا می خونه و تغییر میده
واسه اکسس هم اگه خواستی چند تا Password Remover واست معرفی کنم!

hakim22
سه شنبه 08 فروردین 1391, 22:30 عصر
من یک پروژه داشتم که فایلهای مخصوص به خودش رو ذخیره می کردو میتونست دوباره باز کنه ، و راهی ازش استفاده کردم (چون نرم افزارم هم دیتابیسی بود) استفاده از یک فایل Access بود
به این شکل که هر پارامتر یک ستون تعریف شد و بعد با استفاده از یک خط فرمان ذخیره به صورت XML انجام میشد


Dim mydb As New Database1DataSet
mydb.WriteXml()


اما راه درستش اینه که یک کلاس از همه ی خصوصیاتی که قصد ذخیره کردنش رو داری بسازی ولی Attribute مربوط به Serializeable رو بهش اضافه کنی
بعد با فرمتر ذخیره کنی


<Serializable()> Class mySerClass
Public adminName As String

End Class

Sub SaveTanzimat()
Dim formatter As New Runtime.Serialization.Formatters.Binary.BinaryForm atter
Dim saveFile As IO.FileStream
saveFile = IO.File.Create("c:\tanzimat.xml")
Dim newSer As New mySerClass

formatter.Serialize(saveFile, newSer)
saveFile.Close()
End Sub