Solved

Can we do XML Serialization for an object having collections?

Posted on 2008-10-18
4
220 Views
Last Modified: 2010-08-05
Can we do XML serialization for an object having a collection?
If yes then, please provide me a small example how to do.
0
Comment
Question by:GouthamAnand
4 Comments
 
LVL 1

Accepted Solution

by:
StasL earned 250 total points
ID: 22751265
Hi GouthamAnand,

The bottom line is you can serialize collections, as long as they are strongly typed.
Some collections may be serialized with no extra efforts, i.e. supported by the framework, while others will require some coding or googling.

As for the easy case sample is attached.
The more complex case (the generic dictionary for instance) can be handled using a custom serialization process.
You may refer to the following link for some samples:

http://blogs.msdn.com/psheill/archive/2005/04/09/406823.aspx

List<string> someStringList = new List<string>();
someStringList.Add("one");
 
XmlSerializer xs = new XmlSerializer(typeof(List<string>));
FileStream fs = new FileStream(@"c:\SerializedCollection.xml", 
FileMode.CreateNew);
xs.Serialize(fs, someStringList);
fs.Close();
 
List<string> deserializedList = new List<string>();
FileStream fs1 = new FileStream(@"c:\SerializedCollection.xml", 
					FileMode.Open);
deserializedList = (List<string>)xs.Deserialize(fs1);
fs1.Close();

Open in new window

0
 
LVL 3

Assisted Solution

by:torrie01
torrie01 earned 250 total points
ID: 22781210
I've found the easiest collection to serialize is an ArrayList, see the code below:
    [Serializable()]
    public class ClassWithList
    {
        public ClassWithList()
        {
            
        }
 
        
        // This attribute enables the ArrayList to be serialized:
        [System.Xml.Serialization.XmlArray("ListOfItems")]
        // Explicitly tell the serializer to expect the ClassWithItem class
        // so it can be properly written to XML from the collection:
        [System.Xml.Serialization.XmlArrayItem("Item", typeof(ClassWithItem))]
        public ArrayList ItemList { get; set; }
    }

Open in new window

0

Featured Post

Resolve Critical IT Incidents Fast

If your data, services or processes become compromised, your organization can suffer damage in just minutes and how fast you communicate during a major IT incident is everything. Learn how to immediately identify incidents & best practices to resolve them quickly and effectively.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Just a quick little trick I learned recently.  Now that I'm using jQuery with abandon in my asp.net applications, I have grown tired of the following syntax:      (CODE) I suppose it just offends my sense of decency to put inline VBScript on a…
Today I had a very interesting conundrum that had to get solved quickly. Needless to say, it wasn't resolved quickly because when we needed it we were very rushed, but as soon as the conference call was over and I took a step back I saw the correct …
Nobody understands Phishing better than an anti-spam company. That’s why we are providing Phishing Awareness Training to our customers. According to a report by Verizon, only 3% of targeted users report malicious emails to management. With compan…

830 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question