از بانک های اطلاعاتی به منظور ذخيره و مديريت داده ها استفاده می گردد . در صورتی که قصد ارسال داده های ذخيره شده در يک بانک اطلاعاتی را برای يک سرويس گيرنده داشته باشيم ، 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
Copyright by Shabgard.ORG