Serialize to Xml
Imports System Imports System.IO Imports System.Xml Imports System.Xml.Serialization Public Class MainClass Public Shared Sub Main() Dim roster = New EmployeeCollection(DateTime.Now) Dim employees = New Employee() _ {New Employee With {.Id = 1, .Name = "A", _ .Title = "Coder", _ .HireDate = DateTime.Now, _ .HourlyRate = 100.0}, _ New Employee With {.Id = 4, .Name = "B", _ .Title = "Coder", _ .HireDate = DateTime.Now, _ .HourlyRate = 100.75}} roster.Employees = employees Dim serializer As New XmlSerializer(GetType(EmployeeCollection)) Dim fs As New FileStream("EmployeeCollection.xml", FileMode.Create) serializer.Serialize(fs, roster) fs.Close() roster = Nothing fs = New FileStream("EmployeeCollection.xml", FileMode.Open) roster = DirectCast(serializer.Deserialize(fs), EmployeeCollection) serializer.Serialize(Console.Out, roster) End Sub End Class <XmlRoot("EmployeeCollection")> _ Public Class EmployeeCollection <XmlElement(ElementName:="LastUpdated", datatype:="date")> _ Public LastUpdated As DateTime <XmlArray("Employees"), XmlArrayItem("Employee")> _ Public Employees As Employee() Public Sub New() End Sub Public Sub New(ByVal update As DateTime) Me.LastUpdated = update End Sub End Class Public Class Employee <XmlElement("Name")> _ Public Name As String = String.Empty <XmlElement("Title")> _ Public Title As String = String.Empty <XmlElement(ElementName:="HireDate", datatype:="date")> _ Public HireDate As DateTime = Date.MinValue <XmlElement("HourlyRate")> _ Public HourlyRate As Decimal = 0 <XmlAttribute(AttributeName:="id", DataType:="integer")> _ Public Id As String = String.Empty Public Sub New() End Sub Public Sub New(ByVal employeName As String, ByVal employeeTitle As String, ByVal employeeHireDate As DateTime, ByVal employeeHourlyRate As Decimal) Me.Name = employeName Me.Title = employeeTitle Me.HireDate = employeeHireDate Me.HourlyRate = employeeHourlyRate End Sub End Class