Free cookie consent management tool by TermsFeed Policy Generator

source: trunk/sources/HeuristicLab.ExtLibs/HeuristicLab.Netron/3.0.2672.12446/Netron.Diagramming.Core-3.0.2672.12446/IO/NML/DictionarySerializer.cs @ 2769

Last change on this file since 2769 was 2769, checked in by mkommend, 14 years ago

added unused files for netron (ticket #867)

File size: 1.8 KB
Line 
1using System;
2using System.Collections;
3using System.Xml;
4using System.Xml.Serialization;
5using System.IO;
6using System.Xml.Schema;
7namespace Netron.GraphLib.IO.NML
8{
9  class DictionarySerializer : IXmlSerializable
10  {
11    private IDictionary dictionary;
12
13    public DictionarySerializer()
14    {
15      this.dictionary = new Hashtable();
16    }
17
18    private DictionarySerializer(IDictionary dictionary)
19    {
20      this.dictionary = dictionary;
21    }
22
23    public static void Serialize(IDictionary dictionary, Stream stream)
24    {
25      DictionarySerializer ds = new DictionarySerializer(dictionary);
26      XmlSerializer xs = new XmlSerializer(typeof(DictionarySerializer));
27      xs.Serialize(stream, ds);
28    }
29
30    public static IDictionary Deserialize(Stream stream)
31    {
32      XmlSerializer xs = new XmlSerializer(typeof(DictionarySerializer));
33      DictionarySerializer ds = (DictionarySerializer)xs.Deserialize(stream);
34      return ds.dictionary;
35    }
36
37    XmlSchema IXmlSerializable.GetSchema()
38    {
39      return null;
40    }
41
42    void IXmlSerializable.ReadXml(XmlReader reader)
43    {
44      reader.Read();
45      reader.ReadStartElement("dictionary");
46      while (reader.NodeType != XmlNodeType.EndElement)
47      {
48        reader.ReadStartElement("item");
49        string key = reader.ReadElementString("key");
50        string value = reader.ReadElementString("value");
51        reader.ReadEndElement();
52        reader.MoveToContent();
53        dictionary.Add(key, value);
54      }
55      reader.ReadEndElement();
56    }
57
58    void IXmlSerializable.WriteXml(XmlWriter writer)
59    {
60      writer.WriteStartElement("dictionary");
61      foreach (object key in dictionary.Keys)
62      {
63        object value = dictionary[key];
64        writer.WriteStartElement("item");
65        writer.WriteElementString("key", key.ToString());
66        writer.WriteElementString("value", value.ToString());
67        writer.WriteEndElement();
68      }
69      writer.WriteEndElement();
70    }
71  }
72}
Note: See TracBrowser for help on using the repository browser.