HTML clipboardIntroduction
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!