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)
این زبان چند وقتی هست که جای خودشو به کلی باز کرده و به صورت کاملا عمومی از اون استفاده میشه. حتما 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)