How to serialize an object to XML by using Visual C#

Article translations Article translations
Article ID: 815813 - View products that this article applies to.
Expand all | Collapse all

On This Page

SUMMARY

This step-by-step article describes how to serialize an object to XML by using Visual C#. This method is useful for persisting the state of an object. This method is also useful for cloning an object by de-serializing the XML back to a new object.



Requirements

The following list outlines the recommended hardware, software, network infrastructure, and service packs that are required:
  • Microsoft Visual Studio
This article assumes that you are familiar with the following topics:
  • General familiarity with XML
  • General familiarity with Visual C#

XML Serialization

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:
  1. In Visual C#, create a new Console Application project.
  2. On the Project menu, click Add Class to add a new class to the project.
  3. In the Add New Item dialog box, change the name of the class to clsPerson.
  4. Click Add. A new class is created.

    Note In Visual Studio .NET 2003, click Open.
  5. Add the following code after the Public Class clsPerson statement
     public   string FirstName;
     public   string MI;
     public   string LastName;
    
  6. Switch to the code window for Program.cs in Visual Studio or for Class1.cs in Visual Studio .NET 2003.
  7. In the void Main method, declare and create an instance of the clsPerson class:
    clsPerson p = new clsPerson();
  8. Set the properties of the clsPerson object:
    p.FirstName = "Jeff";
    p.MI = "A";
    p.LastName = "Price";
  9. 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:
    System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(p.GetType());
  10. 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:
    x.Serialize(Console.Out,p);
    Console.WriteLine();
    Console.ReadLine();

Complete Code Listing

using System;

public class clsPerson
{
  public  string FirstName;
  public  string MI;
  public  string LastName;
}

class class1
{ 
   static void Main(string[] args)
   {
      clsPerson p=new clsPerson();
      p.FirstName = "Jeff";
      p.MI = "A";
      p.LastName = "Price";
      System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(p.GetType());
      x.Serialize(Console.Out, p);
      Console.WriteLine();
      Console.ReadLine();
   }
}    

Verification

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 following:
<?xml version="1.0" encoding="IBM437"?>
 <clsPerson xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3
 .org/2001/XMLSchema">
<FirstName>Jeff</FirstName>
 <MI>A</MI>
<LastName>Price</LastName> </clsPerson>

Troubleshoot

The Xml.Serialization.XmlSerializer object performs only shallow serialization. If you also want to serialize the private variables of an object or child objects, you must use deep serialization.

REFERENCES

For more information, visit the following Microsoft Developer Network (MSDN) Web site:
Introducing XML Serialization
http://msdn.microsoft.com/en-us/library/182eeyhh(VS.80).aspx

Properties

Article ID: 815813 - Last Review: September 22, 2011 - Revision: 6.0
APPLIES TO
  • Microsoft Visual C# 2008 Express Edition
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Visual C# 2005 Express Edition
Keywords: 
kbsweptvs2008 kbnamespace kbxml kbhowtomaster KB815813

Give Feedback

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com