I recently played with XML serialization:
In super simple terms, (one of the) aim of serialization is to convert an object (not a class) that can be transported.
There are two processes that are attached to Serialization viz. deserializing and serializing AND to understand that – let’s draw an analogy with star trek:
Remember Transporter?
Source: http://en.wikipedia.org/wiki/Transporter_%28Star_Trek%29
Transporters convert a person or object or matter into an energy pattern –> then “beam” it to a target –> where it is reconverted into matter
In programmer’s world:
Serialization equals “convert a person or object or matter into an energy pattern”
Deserialization equals “where it is reconverted into matter”
Technical (accurate) Definition from Wikipedia:
In computer science, in the context of data storage and transmission, serialization is the process of converting a data structure or object state into a format that can be stored (for example, in a file or memory buffer, or transmitted across a network connection link) and “resurrected” later in the same or another computer environment
Let’s Simplify that!
we need to serialize the object when 1) an object is to be sent over the network 2) state of an object is to be saved.
Moral of the story
To send an object via network, it is serialized.
After it’s received, to recover it, it is deserialized.
Now let’s get into action!
I am familiar with .Net framework– so I am going to share a demo code for XML serialization (serializing + deserializing) with you.
Here’s the class definition (person.cs). Just a simple object for demo purpose:
[code language=”css”]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace XMLSerialization
{
class person
{
static void Main(string[] args)
{
}
public class person
{
private string _firstname, _lastname, _twitter;
public person()
{
_firstname = "";
_lastname = "";
_twitter = "";
}
public string firstname
{
get { return _firstname; }
set { _firstname = value; }
}
public string lastname
{
get { return _lastname; }
set { _lastname = value; }
}
public string twitter
{
get { return _twitter; }
set { _twitter = value; }
}
}
}
}
[/code]
Code for Serializing an object:
[code language=”css”]
class Program
{
static void Main(string[] args)
{
person personone = new person();
personone.firstname = "paras";
personone.lastname = "doshi";
personone.twitter = "@paras_doshi";
Console.WriteLine("serializing….");
XmlSerializer serializer = new XmlSerializer(typeof(person));
string path = ".\filename.xml";
FileStream fs = File.OpenWrite(path);
XmlTextWriter writer = new XmlTextWriter(fs,System.Text.Encoding.UTF8);
writer.Formatting = Formatting.Indented;
try
{
serializer.Serialize(writer, personone);
}
finally
{
writer.Close();
}
Console.WriteLine("Serialization: Done!");
}
}
[/code]
Code to deserialize an object:
[code language=”css”]
Console.WriteLine("Deserialization…..");
XmlSerializer serializer = new XmlSerializer(typeof(person));
string path = ".\filename.xml";
FileStream fs = File.OpenRead(path);
person deserializeperson;
try
{
deserializeperson = (person)serializer.Deserialize(fs);
}
finally
{
fs.Close();
}
Console.WriteLine("Person info:");
Console.WriteLine("First Name: {0}", deserializeperson.firstname);
Console.WriteLine("Last Name: {0}", deserializeperson.lastname);
Console.WriteLine("Twitter: {0}", deserializeperson.twitter);
[/code]
reference: http://msdn.microsoft.com/en-us/library/182eeyhh%28v=vs.71%29.aspx
BTW,
I hope that STAR TREK helped!