Codebase, Hinweis:
Die Seiten "gewusst wie" geben Implemenmtierungsbeispiele für
verschiedene Aufgaben in unterschiedlichen Technoligien. Die
Beispiele sind zumeist wenig dokumentiert. Es soll hier kurz und
knapp die (eine) Umsetzung des Problems nahegelegt werden. Nähere
Informationen zu den verwendeten Codes finden sich im Netz :)
|
C#
|
|
1--> Dictionary serialisieren / Dictionary in XML schreiben / Dirctionary aus XML lesen
____ ____ ____ ____ ____ ____ ____ ____ ____
1--> Dictionary serialisieren / Dictionary in XML schreiben / Dirctionary aus XML lesen
Klasse SerializableDictionary:
_______________________________
using System;
using System.Collections.Generic;
using System.Text;
using System.Xml.Serialization;
namespace myNameSpace
{
[XmlRoot("dictionary")]
public class SerializableDictionary
: Dictionary, IXmlSerializable
{
#region IXmlSerializable Members
public System.Xml.Schema.XmlSchema GetSchema()
{
return null;
}
public void ReadXml(System.Xml.XmlReader reader)
{
XmlSerializer keySerializer = new XmlSerializer(typeof(TKey));
XmlSerializer valueSerializer = new XmlSerializer(typeof(TValue));
bool wasEmpty = reader.IsEmptyElement;
reader.Read();
if (wasEmpty)
return;
while (reader.NodeType != System.Xml.XmlNodeType.EndElement)
{
reader.ReadStartElement("item");
reader.ReadStartElement("key");
TKey key = (TKey)keySerializer.Deserialize(reader);
reader.ReadEndElement();
reader.ReadStartElement("value");
TValue value = (TValue)valueSerializer.Deserialize(reader);
reader.ReadEndElement();
this.Add(key, value);
reader.ReadEndElement();
reader.MoveToContent();
}
reader.ReadEndElement();
}
public void WriteXml(System.Xml.XmlWriter writer)
{
XmlSerializer keySerializer = new XmlSerializer(typeof(TKey));
XmlSerializer valueSerializer = new XmlSerializer(typeof(TValue));
foreach (TKey key in this.Keys)
{
writer.WriteStartElement("item");
writer.WriteStartElement("key");
keySerializer.Serialize(writer, key);
writer.WriteEndElement();
writer.WriteStartElement("value");
TValue value = this[key];
valueSerializer.Serialize(writer, value);
writer.WriteEndElement();
writer.WriteEndElement();
}
}
#endregion
}
}
eine Methode zum Aufrufen:
public static void writeXml_Test_2(List dieLogEntries)
{
XmlSerializer serializer = new XmlSerializer(typeof(List));
FileStream fs = new FileStream("horst2.xml", FileMode.Create);
serializer.Serialize(fs, dieLogEntries);
fs.Close();
}
____________________________666Seitenanfang666_____________________________
666
|