Laden...

Dictionary Serialisieren Problem evtl. Convertieren die Lösung :?

Erstellt von Wundertasse vor 12 Jahren Letzter Beitrag vor 12 Jahren 3.134 Views
W
Wundertasse Themenstarter:in
1 Beiträge seit 2011
vor 12 Jahren
Dictionary Serialisieren Problem evtl. Convertieren die Lösung :?

Ich hoffe ich poste hier in der richtigen Rubrik. (Der orange Text bei dem Thema wollte mich auf die Netzwerktechnologien verweisen) Da mein Problem aber rein in C# und XML vorkommt hoffe ich das dies der richtige Ort ist. 😃

Und zwar hab ich ein Problem beim Serialisieren einer Dictionary<string, object>. Im Internet und auch hier hab ich bereits recherchiert und nichts hilfreiches gefunden.

Problemschilderung:
Ich möchte eine Dictionary<string, object> serialisieren/deserialisieren und in einer XML-Datei speichern.

Das ich die Dictionary nicht so einfach serialisieren kann hab ich schon gelesen und so hab ich bereits versucht die Dictionary in eine List zu convertieren.

//Umkonvertierung Versuch 1


List<ISerializable> serializableList = new List<ISerializable>();
            var list = dic.ToList();       //Dic in List packen
            XmlSerializer xser = new XmlSerializer(serializableList.GetType());
            serializableList.Add((ISerializable)list);

            using (StreamWriter sw = File.CreateText(pfad))
            {
                xser.Serialize(sw, serializableList);
            }

//Umkonvertierung Versuch 2


 List<KeyValuePair<string, List<Artikel>>> list = dic.ToList();    //Dictionary in List packen
            foreach (KeyValuePair<string, List<Artikel>> pair in list)
            {
                Console.WriteLine(pair.Key);
                Console.WriteLine(" {0}", pair.Value);
            }

            XmlSerializer ser = new XmlSerializer(typeof(List<KeyValuePair<string, List<Artikel>>>));
            FileStream fs = new FileStream(datei, FileMode.Create);
            ser.Serialize(fs, ser);
            fs.Close();



//Versuch die Dictionary via DataContractSerializer zu serialisieren,
//funktioniert soweit nur bin ich irgendwie blind und finde den Fehler zum Erzeugen //der XML nicht


	class Program
	{
		public static void Main(string[] args)
		{
			string test = "TEST";			
			Artikel a = new Artikel();
			a.Value = 1;	
						
			Dictionary<string,Artikel> d = new Dictionary<string,Artikel>();
			d.Add(test,a);
			DataContractSerializer dcs = new DataContractSerializer(typeof(Dictionary<string,Artikel>));
			StringBuilder sb = new StringBuilder();
			using(XmlWriter xw = XmlWriter.Create(sb)){
				dcs.WriteObject(xw,d);
								
			}
			string xml = sb.ToString();
			
			string pfad = "testo.xml";
		
			Console.WriteLine("Wert "+ xml);
			Console.ReadLine();
		}
	}
	
	public class Artikel{
		public int Value{
			get;
			set;
		}
	}	

Vielleicht hab ich irgendetwas übersehen nur fällt mir im Moment einfach nicht ein was ich vergessen habe. Als Fehlernachricht bekomme ich eine SerializationException (Fehler beim Deserialisieren des Objekts "vom Typ Merchandizingmanager2.Artikel". Ungültige Daten auf Stammebene. Zeile 1, Position 1.).

Ich erwarte keine Musterlösung nur weiss ich momentan echt nicht was mir außer dem Unconvertieren noch für Möglichkeiten bleiben diese Dictionary in eine XML-Datei zu kriegen.

Vielen herzlichen Dank schonmal für eure Vorschläge/Antworten und auch für das Durchlesen. ^^

Lg Wundertasse

L
667 Beiträge seit 2004
vor 12 Jahren

Hiermit kannst jedes Dictionary easy serialisieren / deserialisieren:

ObjectSerializer

"It is not wise to be wise" - Sun Tzu