Viewing source for Recipe1206vb.aspx

<%@ Page language="vb" %>
<%@ Import Namespace="System.Data" %>
<script language="vb" runat="server">
Dim xmlPath As String
Dim cat As catalog

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
	xmlPath = Server.MapPath("cdcatalog.xml")
	If cat Is Nothing Then
		cat = LoadData(xmlPath)
		Dim cd As catalogCD
		For Each cd In cat.Items
			titleDropDownList.Items.Add(New System.Web.UI.WebControls.ListItem(cd.title))
		Next cd
	End If
End Sub

Private Function LoadData(ByVal path As String) As catalog
	Try
		Dim fs As System.IO.FileStream = System.IO.File.OpenRead(path)
		Dim buff(fs.Length) As Byte
		fs.Read(buff, 0, CInt(fs.Length))
		fs.Close()
		cat = CType(Serialization.DeSerializeXML(System.Text.ASCIIEncoding.ASCII.GetString(buff), GetType(catalog)), catalog)
		Return cat
	Catch
	End Try
End Function	'LoadData

Private Sub titleDropDownList_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
	Dim findvalue As String = titleDropDownList.SelectedItem.Text
	Dim cd As catalogCD
	For Each cd In cat.Items
		If cd.title = findvalue Then
			artistTextBox.Text = cd.artist
			countryTextBox.Text = cd.country
			companyTextBox.Text = cd.company
			priceTextBox.Text = cd.price
			yearTextBox.Text = cd.year
			Exit For
		End If
	Next cd
End Sub

Private Sub SaveButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
	Dim findvalue As String = titleDropDownList.SelectedItem.Text
	Dim foundcd As catalogCD = Nothing
	Dim cd As catalogCD
	For Each cd In cat.Items
		If cd.title = findvalue Then
			foundcd = cd
			Exit For
		End If
	Next cd
	If Not (foundcd Is Nothing) Then
		foundcd.artist = artistTextBox.Text
		foundcd.country = countryTextBox.Text
		foundcd.company = companyTextBox.Text
		foundcd.price = priceTextBox.Text
		foundcd.year = yearTextBox.Text
		Dim data As System.IO.MemoryStream = Serialization.SerializeXML(cat, GetType(catalog))
		Dim databytes As Byte() = data.ToArray()
		If System.IO.File.Exists(xmlPath) Then
			System.IO.File.Delete(xmlPath)
		End If
		Dim f As System.IO.FileStream = System.IO.File.OpenWrite(xmlPath)
		f.Write(databytes, 0, databytes.Length)
		f.Close()
	End If
End Sub

Public Class Serialization

	Public Shared Function SerializeXML(ByVal request As Object, ByVal type As System.Type) As System.IO.MemoryStream
		Try
			Dim serializer As New System.Xml.Serialization.XmlSerializer(type)
			Dim stm As New System.IO.MemoryStream()
			serializer.Serialize(stm, request)
			Return stm
		Catch e As Exception
			Return Nothing
		End Try
	End Function		'SerializeXML

	Public Shared Function DeSerializeXML(ByVal envelope As String, ByVal type As System.Type) As Object
		Try
			Dim serializer As New System.Xml.Serialization.XmlSerializer(type)
			Dim stm As New System.IO.MemoryStream(System.Text.Encoding.ASCII.GetBytes(envelope))
			Dim ud As Object = serializer.Deserialize(stm)
			stm.Close()
			Return ud
		Catch e As Exception
			Return Nothing
		End Try
	End Function		'DeSerializeXML
End Class	'Serialization


<System.Xml.Serialization.XmlRootAttribute("catalog", [Namespace]:="", IsNullable:=False)> _
Public Class catalog
	<System.Xml.Serialization.XmlElementAttribute("cd")> _
	Public Items() As catalogCD
End Class

Public Class catalogCD
	Public title As String
	Public artist As String
	Public country As String
	Public company As String
	Public price As String
	Public year As String
End Class

</script>
<HTML>
	<HEAD>
		<title>Creating a Class from an XML Document</title>
	</HEAD>
	<body>
		<form id="Form1" method="post" runat="server">
			<P>
				<asp:Label id="titleLabel" runat="server">Title:</asp:Label>
				<asp:DropDownList id="titleDropDownList" runat="server" Width="239px" AutoPostBack="True" 
				OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged"></asp:DropDownList></P>
			<P>
				<asp:Label id="artistLabel" runat="server">Artist:</asp:Label>
				<asp:TextBox id="artistTextBox" runat="server"></asp:TextBox></P>
			<P>
				<asp:Label id="countryLabel" runat="server">Country:</asp:Label>
				<asp:TextBox id="countryTextBox" runat="server"></asp:TextBox></P>
			<P>
				<asp:Label id="companyLabel" runat="server">Company:</asp:Label>
				<asp:TextBox id="companyTextBox" runat="server"></asp:TextBox></P>
			<P>
				<asp:Label id="priceLabel" runat="server">Price:</asp:Label>
				<asp:TextBox id="priceTextBox" runat="server"></asp:TextBox></P>
			<P>
				<asp:Label id="yearLabel" runat="server">Year:</asp:Label>
				<asp:TextBox id="yearTextBox" runat="server"></asp:TextBox></P>
			<P>
				<asp:Button id="SaveButton" runat="server" Text="Save Changes" OnClick="SaveButton_Click"></asp:Button></P>
		</form>
	</body>
</HTML>