This step-by-step article describes how to serialize an
object to XML by using Visual Basic .NET or Visual Basic 2005. This method is useful for persisting
an object's state. This method is also useful for cloning an object by
de-serializing the XML back to a new object.
Serialization is the process of taking the state of an object and
persisting it in some fashion. The Microsoft .NET Framework includes powerful
objects that can serialize any object to XML. The System.Xml.Serialization
namespace provides this capability.
Follow these steps to create a
console application that creates an object and then serializes its state to
XML:
Create a new console application in Visual Basic
.NET or in Visual Basic 2005.
Add a new class to the project by clicking Add Class on the Project menu.
In the Add New Item dialog box, change the name of the class to clsPerson.
Click Open. A new class is created.
Note In Visual Studio 2005, click Add.
Add the following code after the Public Class clsPerson
statement:
Public FirstName As String
Public MI As String
Public LastName As String
This creates three properties for the class. These properties are
implemented as class-level Public variables, but this technique also works well
with Property Get/Set procedures.
Switch to the code window for Module1.vb.
In the Sub Main() procedure, declare and create an instance
of the clsPerson class:
Dim p As New clsPerson()
Set the clsPerson object's properties:
p.FirstName = "Jeff"
p.MI = "A"
p.LastName = "Price"
The Xml.Serialization namespace contains an XmlSerializer class that serializes an object to XML. When you create an
instance of XmlSerializer, you pass the type of the class that you want to serialize into
its constructor:
Dim x As New Xml.Serialization.XmlSerializer(p.GetType)
The Serialize method is used to serialize an object to XML. Serialize is overloaded and can send output to a TextWriter, Stream, or
XMLWriter object. In this example, you send the output to the console:
Public Class clsPerson
Public FirstName As String
Public MI As String
Public LastName As String
End Class
Module Module1
Sub Main()
Dim p As New clsPerson()
p.FirstName = "Jeff"
p.MI = "A"
p.LastName = "Price"
Dim x As New Xml.Serialization.XmlSerializer(p.GetType)
x.Serialize(Console.Out, p)
Console.WriteLine()
Console.ReadLine()
End Sub
End Module
To verify that your project works, press CTRL+F5 to run the
project. A clsPerson object is created and populated with the values that you
entered; this state is serialized to XML. The console window shows:
The Xml.Serialization.XmlSerializer object performs only shallow
serialization. If you also want to serialize an object's private variables or
child objects, you must use deep serialization.