Introduction
Most of the websites uses XML Database for the sections like Guestbook,
Comments, and Feedbacks even in many Forums XML Databases are used. To be very
frank, when I was learning XML, I created many XML files and integrated it to
HTML web pages but when I learnt ASP.Net I thought to integrate it in ASP.Net
also. I faced lots of problems like how to create XML files at run time, how to
create columns in XML file at run time, how to connect it to ASP.Net so that
visitors can input some text in XML file. On that time, there were lots of such
questions in my mind. But my friend it is really very-very easy to work with XML
files. Let's take a look at some basic points.
Prerequisite
To learn this article, you must have some basic understanding of XML Database.
Creating XML File at run time
To create XML at run time, we must check its existence first and if not finds
then will create a new one. To do this we have to integrate all in Page Load
event. Let's take a look how it is?
Sub Page_Load(Src As Object,
E As EventArgs)
'Checking the existance
of XML database
strFilePath = Server.MapPath("guestbook.xml")
'If
XML database not exit then it creates a new XML database
'using other
functions given below
If Not Page.IsPostBack Then
'If XML file
not exists, create a new one
If Not File.Exists(strFilePath) Then
InitializeXMLFile()
End If
'If XML
database exist then runs it
PopulateDataSet()
DisplayData()
End If
End Sub
Above coding will fist
check its existence using file name 'guestbook.xml' and if not finds then it
will create a new one. Let's take a look how it is?
Sub InitializeXMLFile()
'Create a new data-set
myDataSet = New DataSet()
'Create
a new data-table
Dim myTable As DataTable
= myDataSet.Tables.Add("myguestbook")
'Define column id, it
will not be visible on form page
Dim myDataColumn as DataColumn
= myTable.Columns.Add("id",
Type.GetType("System.Int32"))
With myDataColumn
.AutoIncrement = true
.AutoIncrementSeed = 1
.AutoIncrementStep = 1
End With
'Seting
column named id as the primary key
Dim arrPrimaryKey(1) As DataColumn
arrPrimaryKey(0) = myDataColumn
myTable.PrimaryKey = arrPrimaryKey
'Defining
other columns which will be visible on form
myTable.Columns.Add("datetime",
Type.GetType("System.DateTime"))
myTable.Columns.Add("name",
Type.GetType("System.String"))
myTable.Columns.Add("email",
Type.GetType("System.String"))
myTable.Columns.Add("comments",
Type.GetType("System.String"))
'Writing
table structure in XML file which is defined above
myDataSet.WriteXml(strFilePath, XMLWriteMode.WriteSchema)
End Sub
Above
coding will created new XML Database with Data Table named 'myguestbook'. Now we
have to populate it for use. Let's take a look how it is?
Sub PopulateDataSet()
myDataSet = New DataSet()
myDataSet.ReadXml(strFilePath, XmlReadMode.ReadSchema)
End Sub
Above
coding will populated the XML Database file for use as 'Read Only' Property. Now
we have to display its data on web page. Let's take a look how it is?
Sub DisplayData()
'Bind data to Repeater
Dim myDataView As DataView
= myDataSet.Tables(0).DefaultView
'Uncomment next line to
display the newer messages first
myDataView.Sort = "id
DESC"
myRepeater.DataSource = myDataView
myRepeater.DataBind()
End Sub
In above coding, we are displaying the data in descending order. Now we have to
create web page and connect it to XML file. In web page we should have three
controls for date and time, name and email id and a command button to insert
data in XML file. Let's take a look to create web page with controls.
<table style="width:
226px" bgcolor="#dcdcdc">
<tr>
<td>Name</td>
<td style="width:
292px"><asp:textbox id="txtEmail" runat="server" columns="30"maxlength="30" Width="264px" /></td>
<td style="width:
134217727px" align="left" valign="top">
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"
ErrorMessage="RequiredFieldValidator" ControlToValidate="txtEmail">*</asp:RequiredFieldValidator></td>
</tr>
<tr>
<td>Email</td>
<td style="width:
292px"><asp:textbox id="txtName" runat="server" columns="50"maxlength="50" Width="263px" /></td>
<td style="width:
134217727px" align="left" valign="top">
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server"
ErrorMessage="RequiredFieldValidator" ControlToValidate="txtName">*</asp:RequiredFieldValidator><br />
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server"
ErrorMessage="RegularExpressionValidator" ControlToValidate="txtName"
ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*">*</asp:RegularExpressionValidator></td>
</tr>
<tr>
<td valign="top">Comments</td>
<td style="width:
292px"><asp:textbox id="txtComments" runat="server"columns="30" rows="4" textmode="multiline" wrap="true" /></td>
<td style="width:
134217727px" align="left" valign="top">
<asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server"ErrorMessage="RequiredFieldValidator"ControlToValidate="txtComments">*</asp:RequiredFieldValidator></td>
</tr>
<tr>
<td colspan="2" align="right"><asp:button id="btnSubmit" text="Submit"onclick="btnSubmit_Click" runat="server" /></td>
<td align="left" colspan="1" style="width:
134217727px" valign="top">
</td>
</tr>
</table>
In above coding we
have used some validation and regular expressions. Now we only have to call the
XML file to insert the data in XML file and to display the data on web page.
Let's take a look to display the data on web page from XML file.
<asp:Repeater id="myRepeater" runat="server">
<HeaderTemplate>
<table border="0" cellpadding="2" cellspacing="0" width="100%" style="font:
10pt verdana">
</HeaderTemplate>
<ItemTemplate>
<tr width="100%">
<td width="100%">
<u><b>Date
and Time:</b> <%# DataBinder.Eval(Container.DataItem, "datetime")%></u>
</td>
</tr>
<tr>
<td>
<b>Name:</b> <%#DataBinder.Eval(Container.DataItem, "name")%>
</td>
</tr>
<tr>
<td width="100%">
<b>Comment:</b> <br /><i><%# DataBinder.Eval(Container.DataItem, "comments")%></i>
</td>
</tr>
<tr>
<td>
<b>Email
ID:</b> <a href="mailto:<%#DataBinder.Eval(Container.DataItem,
"email")%>?subject=Email
ID">
Send Email</a><br><br>
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
In above coding we have used Repeater control and some templates. Remember in
web page we have created a button as follows
<td colspan="2" align="right"><asp:button id="btnSubmit" text="Submit" onclick="btnSubmit_Click"runat="server" />
In above coding we are calling a function named btnSubmit_Click() but still we
have not created such functions. This function will insert the data in XML file.
Let's take a look at function.
Sub btnSubmit_Click(ByVal src As Object, ByVal e As EventArgs)
If txtName.Text = "" Or txtEmail.Text
= "" Or txtComments.Text
= "" Then
Else
PopulateDataSet()
'Add new entry to
DataSet
Dim myDataRow As DataRow
= myDataSet.Tables(0).NewRow()
myDataRow("datetime")
= DateTime.Now()
myDataRow("name")
= txtEmail.Text.ToString()
myDataRow("email")
= txtName.Text.ToString()
myDataRow("comments")
= txtComments.Text.ToString()
myDataSet.Tables(0).Rows.Add(myDataRow)
'Write to XML
myDataSet.WriteXml(strFilePath, XmlWriteMode.WriteSchema)
DisplayData()
'Clear textboxes
txtName.Text = ""
txtEmail.Text = ""
txtComments.Text = ""
End If
End Sub
Now we have every thing to run this project successfully. Here is some
screenshots of my web page.
HAVE A HAPPY CODING!