
This Article Illustrate how to process data within XML File. For this Article I have developed a small Application that allows users to:
· Read Data from XML file and display it in the ASP.NET DataGrid Control.
· Write Data in XML File.
· Updating Data in XML File.
Getting Started
There are 2 main files:
1. Products.xml
2. ItemXML.vb
XML file (Products.xml) contains three elements
<SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">
<o:p></o:p> <?xml version="1.0" standalone="yes"?> <Items>
<Item>
<ItemID>1</ItemID>
<ProductName>8-23 hours </ProductName>
<Price>99</Price>
</Item>
<Item>
<ItemID>2</ItemID>
<ProductName>1 day</ProductName>
<Price>92</Price>
</Item>
</Items>
ItemXML.vb contains all the business logic that I have used to process XML File
I have used DataSet Object’s ReadXML method to Read data from XML file and then bind it to DataGrid control.
Public Function GetAll(ByVal Path As String) As DataTable
Dim dt As New DataTable
Dim ds As New DataSet
ds.ReadXml(Path & "/Products.xml")
Dim dt_ret As DataTable = ds.Tables(0)
Return dt_ret End Function
Dim ObjXMLData as New BusinessLayer.ItemXML
dt = ObjXMLData.GetAll(Server.MapPath("/").ToString())
DataGrid1.DataSource = dt
DataGrid1.DataBind()
Variable ‘Path’ contains Server.MapPath(“/”) .. The Server.MapPath is not Accessible from the Class file, that is why I have sent it from the code behind file.
Public Function Insert(ByVal ProductName As String,
ByVal Price As Long, ByVal Path As String) As Long Try Dim dr As DataRow Dim ds As New DataSet ds.ReadXml(Path & "/Products.xml")
dr = ds.Tables(0).NewRow
dr("ItemID") = CType(
ds.Tables(0).Rows(ds.Tables(0).Rows.Count - 1)
("ItemID"), Long) + 1
dr("ProductName") = ProductName
dr("Price") = Price
ds.Tables(0).Rows.Add(dr)
ds.WriteXml(
Path & "/Products.xml", XmlWriteMode.WriteSchema)
Return 1
Catch ex As Exception
Return 0
End Try
End Function
Insert function takes 3 parameters (ProductName, Price, Path).
Item ID will be generated automatically by incrementing the last item ID in XML file by using the code:
dr("ItemID") = CType(ds.Tables(0).Rows(ds.Tables(0).Rows.Count - 1)("ItemID"), Long) + 1
ds.Tables(0).Rows.Count -1 gives the last index value of the DataSet object
For Writing to the XML File, I am using WriteXml method of the DataSet that takes the path of the file as a Parameter.
Note: set permissions on the directory, if you do NOT want to make ALL files writeable, you could probably get away with setting the permissions on the Products.xml file itself.
To achieve the updating process, I have used quite similar process as I have done in the Insertion. Here I am getting the Item ID from the QueryString and then compared it with all the ItemID’s from the XML file. If the ItemID exists, insert the new row at the same index value.
ObjXMLData.Update(Request.QueryString("Product_ID"), Txt_ProductName.Text, Txt_Price.Text, Server.MapPath("/").ToString)
Public Function Update(ByVal Item_ID As Long, ByVal ProductName As
String, ByVal Price As Long, ByVal Path As String) As Long
Try
Dim ds As New DataSet
ds.ReadXml(Path & "/Products.xml")
Dim dr As DataRow
dr = ds.Tables(0).NewRow
Dim a As Integer
Dim b As Integer
For b = 0 To ds.Tables(0).Rows.Count - 1
If Item_ID = ds.Tables(0).Rows(b)("ItemID") Then ds.Tables(0).Rows(b)("ItemID") = Item_ID
ds.Tables(0).Rows(b)("ProductName") = ProductName
ds.Tables(0).Rows(b)("Price") = Price
ds.WriteXml(Path & "/Products.xml",
XmlWriteMode.WriteSchema) End If
Next
Return 1
Catch ex As Exception
Return 0
End Try End Function
That’s all for this little topic. The code snippet used above is just to explain and is not complete. Download the complete source code from the zip file (download link is on the top).
I am not used to of writing Articles infect this is first Article and u could have some problems understanding what I have done so far.
For any kind of help contact me: arshadras@hotmail.com
文档说明:
相关文档
返回首页 | 关于本站 | | 友情链接 | 广告服务 | 意见建议 | 访客留言 | 本站论坛
Copyright© 2001-2006 ProgramBBS.com All Rights Reserved 版权所有©编程论坛
Email: 吉ICP备05009985号
感谢长春订餐网友情支持