DevTips.NET

Object bewaren in xml

Soms is het praktisch om de inhoud van een object, al dan niet tijdelijk, te bewaren in een XML bestand. Dat kan bijvoorbeeld handig zijn voor kleine klassen en die waarbij een database overkill is. Het codeknipsel bevat twee methoden waarmee een object bewaard wordt als XML en weer opgehaald kan worden. Een voorbeeld aanroep is als volgt:

string test = "Zo maar iets";
Util.PersistObject(test, "d:\\temp\\test.xml");
string test2 = (string)Util.GetObject("d:\\temp\\test.xml", typeof(string));

Houdt er rekening mee dat alleen klassen die serialiseerbaar (serializable) zijn op deze manier bewaard kunnen worden. Via bijgaande link vind je meer informatie over het serialiseren van objecten.

.NET

Code

using System;
using System.Xml;
using System.Xml.Serialization;
using System.IO;
namespace DevTips.NET
{
    public class Util
    {
        public static void PersistObject(object value, string path)
        {
            XmlSerializer s = new XmlSerializer(value.GetType());
            TextWriter writer = new StreamWriter(path);
            s.Serialize(writer, value);
            writer.Close();
        }
        public static object GetObject(string path, Type type)
        {
            object value = null; if (File.Exists(path))
            {
                FileStream fs = new FileStream(path, FileMode.Open);
                XmlReader reader = new XmlTextReader(fs);
                XmlSerializer s = new XmlSerializer(type);
                value = s.Deserialize(reader);
                reader.Close(); fs.Close();
            }
            return value;
        }
    }
}
comments powered by Disqus