از بانک های اطلاعاتی به منظور ذخيره و مديريت داده ها استفاده می گردد . در صورتی که قصد ارسال داده های ذخيره شده در يک بانک اطلاعاتی را برای يک سرويس گيرنده داشته باشيم ، XML گزينه ای مطلوب در اين رابطه است . با استفاده از XML داده ها در ساختاری ذخيره و سازماندهی می شوند که سرويس گيرندگان با هر نوع پلت فرم قادر به استفاده از آنان با توجه به اهداف عملياتی خود می باشند. در حقيقت ، XML مکانيزم استانداردی به منظور مبادله داده بين دو نقطه مبداء و مقصد را فراهم می نمايد . بدين ترتيب بخش های متفاوت يک نرم افزار و يا نرم افزارهای مختلف ، قادر به مبادله داده بين خود خواهند بود .
XML در دات نت دارای نقشی محوری و اساسی بوده و نظير چسبی است که تمام بخش های فريمورک دات نت را به يکديگر متصل و مرتبط می نمايد .مثلا" ADO.NET اساس کار خود را بر روی DataSet استوار نموده که بطور کامل از XML حمايت می نمايد . کلاس DataSet دارای مجموعه وسيعی از متدهای لازم به منظور پردازش اسناد XML است . برخی از متداولترين آنان عبارتند از :
-
ReadXml
-
WriteXml
-
GetXml
-
GetXmlSchema
-
InferXmlSchema
-
ReadXmlSchema
-
WriteXmlSchema.
در اين مقاله با نحوه ايجاد يک سند XML که محتويات آن متاثر از اجرای يک query در ارتباط با يک بانک اطلاعاتی می باشد ، آشنا خواهيم شد. بدين منظور مراحل زير را دنبال خواهيم کرد :
-
مرحله اول : ايجاد بانک اطلاعاتی ( از يک بانک اطلاعاتی Access استفاده خواهيم کرد )
-
مرحله دوم : مشخص نمودن يک ساختار برای فايل XML
-
مرحله سوم : ايجاد يک فرم وب که ليست محصولات را در يک DataGrid نمايش داده و کاربر بتواند با استفاده از Button تعبيه شده بر روی آن اقدام به ايجاد فايل XML و Schema مربوط به آن نمايد .
-
مرحله چهارم : ايجاد يک DataSet و پر نمودن داده در آن با استفاده از يک SQL query ( اين کار را در روتين Page_Load انجام خواهيم داد )
-
مرحله پنجم : نوشتن روتين مربوط به ايجاد فايل XML
مرحله اول : ايجاد بانک اطلاعاتی
بانک اطلاعاتی Products و جدول OurProducts
مرحله دوم : مشخص نمودن يک ساختار برای فايل XML
فايل XML که قصد ايجاد آن را داريم دارای ساختار زير است :
فا يل XML نمونه |
<XMLProducts>
<ProductSpec>
<ProductID> </ProductID>
<ProductName> </ProductName>
<UnitPrice> </UnitPrice>
</ProductSpec>
...
</XMLProducts>
|
مرحله سوم : ايجاد يک فرم وب
در فرم وب از دو کنترل DataGrid و Button استفاده شده است . از کنترل DataGrid به منظور نمايش محتويات Dataset و از کنترل Button به منظور ايجاد فايل XML ، استفاده خواهيم کرد .
فرم وب |
<%@ Page Language ="VB" %>
<%@ Import Namespace="System.Xml" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Data.OleDb" %>
<html><head></head><body>
<form runat="server">
<b>ليست محصولات </b> <br/><br/>
<asp:DataGrid id="ProductGrid" runat="server"
AutoGenerateColumns="False"
Font-Names="Tahoma"
Font-Size="8pt"
CellPadding="1"
GridLines="Horizontal"
...
</asp:DataGrid>
<br/><br/>
<asp:Button id="cmdMakeXML" Text="ايجاد فايل XML " runat="server" onclick="MakeXML"/>
</body></form></html>
|
مرحله چهارم : ايجاد يک DataSet و پر نمودن داده در آن
اين کار از طريق روتين Page_laod انجام می شود . در اين روتين پس از ارتباط با بانک اطلاعاتی Products و اجرای يک query در ارتباط با جدول OurProducts ، داده مورد نظر در DataSet قرار گرفته و در نهايت با نسبت دهی آن به خصلت DataSource کنترل DataGrid ، داده ها در کنترل DataGrid نمايش داده می شوند .
روتين Page_Load |
Sub Page_Load(s As Object, e As EventArgs)
If Not Page.IsPostBack Then
Dim myDataSet As New DataSet("myXMLProduct")
Dim myConn As New OleDbConnection( "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\Products.mdb")
Dim mydataAdapter As New OleDbDataAdapter _
("SELECT ProductID,ProductName,UnitPrice FROM OurProducts" ,myConn)
mydataAdapter.Fill(myDataSet,"ProductSpec")
ProductGrid.DataSource=myDataSet.Tables(0)
ProductGrid.DataBind
Session("Ds")=myDataSet
End If
End Sub
|
مرحله پنجم : روتين MakeXml
در اين مرحله فايل های myXMLData.xml و myXMLData.xsd ايجاد خواهند شد . بدين منظور يک DataSet ايجاد و داده آن از طريق متغير Session ايجاد شده در روتين Page_Load پر می گردد .
روتين MakeXml |
Sub MakeXML(s As Object, e As EventArgs)
Dim myFs1 As New FileStream (Server.MapPath _
("myXMLData.xml") ,FileMode.Create ,FileShare.ReadWrite)
Dim myFs2 As New FileStream(Server.MapPath _
("myXMLData.xsd"),FileMode.Create,FileShare.ReadWrite)
Dim myDataSet As New DataSet
myDataSet=Session("Ds")
myDataSet.WriteXml(myFs1)
myFs1.Close()
myDataSet.WriteXmlSchema(myFs2)
myFs2.Close()
End Sub
|
پس از ذخيره تمامی کدهای اشاره شده در فايل MakeXmlFromDataBase.aspx و مشاهده آن در مرورگر ، خروجی زير را خواهيم داشت :
پس از فعال نمودن دکمه "ايجاد فايل XML " ، فايل های myXMLData.xml و myXMLData.xsd ايجاد می گردند .
فايل myXMLData.xml
myXMLData.xsd