PDA

View Full Version : آموزش: XML چیست و نحوه کار با آن چگونه است؟



Mani_rf
شنبه 07 دی 1392, 23:49 عصر
XML درواقع یک قرارداد یا زبان برای ذخیره و بازبابی اطلاعات داخل فایل هست که میشه گفت برگرفته از HTML هست و تقریبا از همون قوانین برای ذخیره سازی و بازیابی استفاده میکنه.

این زبان چند وقتی هست که جای خودشو به کلی باز کرده و به صورت کاملا عمومی از اون استفاده میشه. حتما Web.Config وب سایت یا App.Config برنامه های ویندوزی رو دیدید. این دوتا فایل کاملا رایج با ساختار XML ذخیره و بازیابی میشن. البته از XML در جایهای خیلی زیاد استفاده و کاربرد هایی خیلی زیادی گرفته میشه. مخصوصا تو Web و WPF و WCF و البته بانک های اطلاعاتی از جمله SQL Server و Oracle. برای مثال آخر هم میتونم به RSS که امروزه تو همه سایت ها و دیوایس ها رایجه و استفاده میشه اشاره کنم

به زبان ساده تر با استفاده از XML میتونید یک سری اطلاعات رو به صورت طبقه بندی شده درون یک فایل متنی ذخیره کنید و با رعایت همون طبقه بندی به اطلاعات دسرسی پیدا کنید.
ساختار کلی به صورت مجموع گره های زیر هم هست که اطلاعات رو تو خودشون ذخیره میکنن.
این مثال رو در نظر بگیرید :


<?xml version="1.0"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>


منبع : w3schools (http://www.w3schools.com/xml/)

تو این مثال یک گره ایجاد شده (Note)؛
زیر گره یک سری اطلاعات که مربوط به ارسال یک ایمل هست در قالب زیر گره های (To, From , Heading , Body) قرار گرفته .
قاعده کلی به همین شکله، هر کلمه ای بین دو علامت <> قرار بگیره یعنی یک گره جدید هر گره هم به </> شکل بسته میشه . بین <[اسم گره]/><[اسم گره]> هم هر چیزی که قرار بگیره میشه محتوای.
این رو هم در نظر بگیرید که هر گره و هر زیرگره هم می تونه یکسری زیر گره داشته باشه.

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

خواندن از XML:

Private Function VerifyCredentials(ByVal Username As String, ByVal Password As String) As Boolean
Dim LoginDS As DataSet = New DataSet

LoginDS.ReadXml(Page.Server.MapPath("Users.xml"))

If LoginDS.Tables(0).Select("username='" & Username & " '").Length > 0 Then
Dim LoginRow() As DataRow = LoginDS.Tables(0).Select("username='" & Username & "'")

If LoginRow(0).Item("password").ToString = FormsAuthentication.HashPasswordForStoringInConfig File(Password, "MD5") Then
Return True
Else
_statusMessage = "رمز عبور نادرست است ."
Return False
End If
Else
_statusMessage = "کاربر مورد نظر در سیستم یافت نشد."
Return False
End If
End Function

نوشتن در فایل XML :

Private Function SaveCredentials(ByVal Username As String, ByVal Password As String, ByVal PasswordConfirm As String) As Boolean
Dim LoginDS As DataSet = New DataSet

Try
LoginDS.ReadXml(Page.Server.MapPath("Users.xml"))
Catch fnf As System.IO.FileNotFoundException
CreateBlankUsersFile()
LoginDS.ReadXml(Page.Server.MapPath("Users.xml"))
End Try

If Not LoginDS.Tables(0).Select("username='" & Username & "'").Length > 0 Then
If _password <> "" And _password = _passwordConfirm Then
Dim NewLogin As DataRow = LoginDS.Tables(0).NewRow

NewLogin("username") = _userName
NewLogin("password") = FormsAuthentication. HashPasswordForStoringInConfigFile(_password, "MD5")
NewLogin("registerDate") = DateTime.Today.ToShortDateString

LoginDS.Tables(0).Rows.Add(NewLogin)
LoginDS.WriteXml(Page.Server.MapPath("Users.xml"))

_statusMessage = "کاربر مورد نظر به سیستم اضافه شد."
Return True
Else
_statusMessage = "رمز عبور درست وارد نشده است "
Return False
End If
Else
_statusMessage = "نام کاربر در سیستم وجود دارد . " & "لطفا نام دیگری انتخاب کنید."
Return False
End If
End Function
Public Sub CreateBlankUsersFile()
Dim NewXml As System.IO.StreamWriter = System.IO.File.CreateText(Page.Server.MapPath("Use rs.xml"))

NewXml.WriteLine("<users>")

'user field describes a single user
NewXml.WriteLine(" <user>")

'date field contains the Registration date
NewXml.WriteLine(" <registerDate>" & DateTime.Today.ToShortDateString & "</registerDate>")

'username field
NewXml.WriteLine(" <username>Admin</username>")

'password field contains MD5 hash value
NewXml.WriteLine(" <password>" & FormsAuthentication.HashPasswordForStoringInConfig File("password", "MD5") & "</password>")
NewXml.WriteLine(" </user>")
NewXml.WriteLine("</users>")
NewXml.Close()
End Sub

منبع مثال (http://barnamenevis.org/showthread.php?4596-XML-%DA%86%DB%8C%D8%B3%D8%AA-%D8%9F&p=202714&viewfull=1#post202714)

sagggad
یک شنبه 08 دی 1392, 06:46 صبح
جناب Mani_rf معمولا و بیشتر چه داده هایی در Xml ذخیره میشن؟؟

Mani_rf
یک شنبه 08 دی 1392, 09:57 صبح
جناب Mani_rf معمولا و بیشتر چه داده هایی در Xml ذخیره میشن؟؟

معمولا اطلاعاتی که در طول کار برنامه خیلی زیاد مورد استفاده قرار نمیگیرن مثل تنظیمات برنامه ها در xml ذخیره میشه .
در مواردی هم در وب هم از اون به عنوان قالب استاندارد برای انتقال اطلاعات بین سرور و کلاینت استفاده میشه . (البته Json هم استفاده میشه که به این بحث ارتباطی نداره.)

البته این یک فرمت استاندارد هست که هر برنامه نویسی بسته به ذوق و سلیقه خودش ازش استفاده میکنه. مثلا خیلی از برنامه هایی که از تم پشتیبانی میکنن تم ها رو تو قالب XML ذخیره میکنن.