Click here to Skip to main content
13,863,479 members
Click here to Skip to main content
Add your own
alternative version

Tagged as


16 bookmarked
Posted 2 Jul 2009
Licenced CPOL

Serializing and Deserializing Objects…to and from…XML

, 6 Jan 2010
Rate this:
Please Sign up or sign in to vote.
Over on the ASP.NET forums I recently had the opportunity* to help a few lost souls by showing them how to serialize objects to XML and deserialize the XML back into objects.

Over on the ASP.NET forums, I recently had the opportunity* to help a few lost souls by showing them how to serialize objects to XML and deserialize the XML back into objects. Since the question has come up more than once, I decided to BLOG it so I could refer similar questions in the future to this post.

*I use the word opportunity because by helping others I am forced to think hard about the technology and to think even harder about how to communicate the technology. It makes me better at what I do. All right then, enough after-school-special-feel-good-about-yourself-I'm-ok-you're-ok fluffy nonsense… on with the code:

Here is a simple class I'm going to work with. It has both properties and fields:

public class MyClass
    // old school property
    private int _Age;  
    public int Age  
        get { return _Age; }
        set { _Age = value; }

    // new school property
    public bool Citizen { get; set; }

    // there's nothing wrong with using fields
    public string Name;  

Here are the two functions to Serialize and Deserialize an object:

/// ---- SerializeAnObject -----------------------------
/// <span class="code-SummaryComment"><summary>
</span>/// Serializes an object to an XML string
/// <span class="code-SummaryComment"></summary>
</span>/// <span class="code-SummaryComment"><param name="AnObject">The Object to serialize</param>
</span>/// <span class="code-SummaryComment"><returns>XML string</returns>
public static string SerializeAnObject(object AnObject)
    XmlSerializer Xml_Serializer = new XmlSerializer(AnObject.GetType());
    StringWriter Writer = new StringWriter();      

    Xml_Serializer.Serialize(Writer, AnObject);
    return Writer.ToString();

/// ---- DeSerializeAnObject ------------------------------
/// <span class="code-SummaryComment"><summary>
</span>/// DeSerialize an object
/// <span class="code-SummaryComment"></summary>
</span>/// <span class="code-SummaryComment"><param name="XmlOfAnObject">The XML string</param>
</span>/// <span class="code-SummaryComment"><param name="ObjectType">The type of object</param>
</span>/// <span class="code-SummaryComment"><returns>A deserialized object...must be cast to correct type</returns>
public static Object DeSerializeAnObject(string XmlOfAnObject, Type ObjectType)
    StringReader StrReader = new StringReader(XmlOfAnObject);
    XmlSerializer Xml_Serializer = new XmlSerializer(ObjectType);
    XmlTextReader XmlReader = new XmlTextReader(StrReader);
        Object AnObject = Xml_Serializer.Deserialize(XmlReader);
        return AnObject;

Here is some sample code showing how to use the functions.

Note: I keep these functions (and other functions) in a class I call MiscUtilities. You will have to modify the code… depending on where you place the functions.

protected void Button1_Click(object sender, EventArgs e)
    // create and initialize an object
    MyClass Test = new MyClass();
    Test.Age = 18;
    Test.Name = "Rocky Balboa";
    Test.Citizen = true;
    //  Serialize it
    String XML;
    XML = MiscUtilities.SerializeAnObject(Test);
    // Deserialize it
    MyClass Test2;
    Test2 = MiscUtilities.DeSerializeAnObject(XML, typeof(MyClass)) as MyClass;
    // TODO:  Get a cup of coffee and bask in the glory of rock solid code.

Here is what the XML string looks like (after formatting):

<?xml version="1.0"?>
<MyClass xmlns:xsi= 

  <Name>Rocky Balboa</Name>

There are limitations: XmlSerializer does not serialize private fields, methods, indexers or read-only fields.

Once you have the XML string, you can email it, store it in a database, save it to disk, or…print a copy of it and have your mom tape it to the refrigerator next to the turkey picture you made in the second grade by tracing around your hand with a Crayola crayon.

I hope someone finds this useful.


This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


About the Author

Steve Wellens
EndWell Software, Inc.
United States United States
I am an independent contractor/consultant working in the Twin Cities area in Minnesota. I work in .Net, Asp.Net, C#, C++, XML, SQL, Windows Forms, HTML, CSS, etc., etc., etc.

You may also be interested in...

Comments and Discussions

GeneralMy vote of 1 Pin
Russell Garner2-Jul-09 11:13
memberRussell Garner2-Jul-09 11:13 
GeneralRe: My vote of 1 Pin
Steve Wellens2-Jul-09 11:21
memberSteve Wellens2-Jul-09 11:21 
GeneralHmm Pin
Jefis2-Jul-09 11:07
memberJefis2-Jul-09 11:07 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Cookies | Terms of Use | Mobile
Web04 | 2.8.190214.1 | Last Updated 6 Jan 2010
Article Copyright 2009 by Steve Wellens
Everything else Copyright © CodeProject, 1999-2019
Layout: fixed | fluid