XML class serializer in C#
Filed Under (c#) by The Chef on 06-06-2009
Tagged Under : .net framework, c#, memory xml deserialize, xml deserialize, xml serialize
Here it is a short class very useful for serializing and deserializing. This is a good for settings file or configuration files.
using System.Xml.Serialization;
using System.IO;
using System.Text;
namespace XMLData
{
public static class ObjectXMLSerializer<T> where T : class
{
public static T Load(string path)
{
T mRet = null;
using (TextReader textReader = new StreamReader(path))
{
XmlSerializer mXmlSerializer = new XmlSerializer(typeof(T));
mRet = mXmlSerializer.Deserialize(textReader) as T;
}
return mRet;
}
public static void Save(T serializableObject, string path)
{
using (TextWriter mTextWriter = new StreamWriter(path))
{
XmlSerializer mXmlSerializer = new XmlSerializer(typeof(T));
mXmlSerializer.Serialize(mTextWriter, serializableObject);
}
}
public static T LoadString(string mString)
{
T mRet = null;
using (MemoryStream textReader = new MemoryStream(Encoding.ASCII.GetBytes(mString)))
{
XmlSerializer mXmlSerializer = new XmlSerializer(typeof(T));
mRet = mXmlSerializer.Deserialize(textReader) as T;
}
return mRet;
}
}
}
Here it is a short usage example:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace test
{
class Program
{
static void Main(string[] args)
{
links lnk = new links();
lnk.str = "something";
lnk.integer = 23;
lnk.floatnumber = 0.23f;
lnk.stringlist.Add("element 1");
lnk.stringlist.Add("element 2");
lnk.stringlist.Add("element 3");
//save class to xml
XMLData.ObjectXMLSerializer<links>.Save(lnk, @"c:\test.xml");
//load class from xml
lnk = XMLData.ObjectXMLSerializer<links>.Load(@"c:\test.xml");
}
}
[Serializable]
public class links
{
public String str;
public int integer;
public float floatnumber;
public List<string> stringlist = new List<string>();
}
}
and this is the xml it produces:
<?xml version="1.0" encoding="utf-8"?>
<links xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<str>something</str>
<integer>23</integer>
<floatnumber>0.23</floatnumber>
<stringlist>
<string>element 1</string>
<string>element 2</string>
<string>element 3</string>
</stringlist>
</links>
[...] result is an xml. You can deserialize it using the XML serializer/deserializer from the previous [...]