Home   Subscribe   Linkedin
  Archive Contact  

Serialize and Deserialize XML into List<T>

Below are the two methods for serialization and deserialization which take generic list as parameter.

private XDocument Serialize<T>(List<T> paramList)
    {

        var doc = new XDocument();
        System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(paramList.GetType());

        System.Xml.XmlWriter writer = doc.CreateWriter();

        serializer.Serialize(writer, paramList);

        writer.Close();   

        return doc;        
    }

private List<T> Deserialize<T>(XDocument doc)
    {
        System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(typeof(List<T>));

        System.Xml.XmlReader reader = doc.CreateReader();

        List<T> result = (List<T>)serializer.Deserialize(reader);
        reader.Close();

        return result;
    }
 So now we can serialize whatever list we want. We don't need to specify the list type every time.
 
// For serialize

List<MyType> list = new List<MyType>();
        list.Add(new MyType());
        list.Add(new MyType() { Name = "Try", Value=123 });
        var xml =   Serialize(list);
        xml.Save(filePath);  // filePath is the location where xml is saved

// For deserialize

var document = new XDocument(XDocument.Load(filePath));
List<MyType> newList = Deserialize<MyType>(document );
Posted by: Mohd Ahmed

Categories: ASP.NET, C#, XML

Tags: