Entwickler-Ecke
IO, XML und Registry - Speichern und Laden von Daten (aus Listbox) in XML
lordzwieback - Mo 17.11.14 13:01
Titel: Speichern und Laden von Daten (aus Listbox) in XML
Hallöchen liebe Community,
ich habe ein Formular mit zwei Listboxen in welche ich Einträge schreiben kann, nennen wir sie mal box1 und box2. Ich kann Einträge hinzufügen, löschen, und von einer in die andere Box schieben.
Jetzt verzweifle ich mit dem Speichern und dem Laden der Daten. Ich dachte, XML wäre die beste Lösung dafür, habe aber vorher noch nie mit XML gearbeitet.
Mir schwebt eine Struktur wie diese vor:
XML-Daten
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| <box1> <entries> <entry name> <datetime> <notes>
<entry name> <datetime> <notes> </entries> </box1>
<box2> <entries> <entry name> <datetime> <notes> </entries> </box2> |
Ist das so überhaupt möglich ?
Ich habe schon diverse Online Tutorials gemacht, aber nie das Ergebnis bekommen, dass ich haben wollte. Für ein kleinwenig Hilfe wäre ich sehr dankbar.
Grüße,
lordzwieback
Moderiert von
Th69: Code- durch XML-Tags ersetzt
lordzwieback - Mo 17.11.14 13:36
Werd ich gleich mal machen, danke für den Hinweis.
EDIT:
Habe das jetzt mal so etwa auf mein Programm angepasst. Das Ganze schaut so aus..
Meine Klasse:
C#-Quelltext
1: 2: 3: 4: 5: 6:
| public class Eintrag { public string art { get; set; } public string Bezeichnung { get; set; } public string Datum { get; set; } } |
Meine SaveXML-Methode:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24:
| private void SaveXML() { string dat = "";
Eintrag eintrag = new Eintrag(); if (chkTodo.Checked == true) { eintrag.art = "todo"; } else { eintrag.art = "done"; } eintrag.Bezeichnung = tbEintrag.Text; dat = DateTime.Now.ToString(); eintrag.Datum = dat; XmlWriterSettings xws = new XmlWriterSettings(); xws.Indent = true; xws.IndentChars = " "; XmlWriter xw = XmlWriter.Create("test.xml", xws); XmlSerializer xs = new XmlSerializer(typeof(Eintrag)); xs.Serialize(xw, eintrag); xw.Close(); } |
Da ich ein Problem nach dem anderen lösen möchte und nicht alles auf einmal und das dann nicht richtig, folgende Fehler:
Ich bekomme momentan als Inhalt des XML Files folgenden Code:
XML-Daten
1: 2: 3: 4: 5: 6:
| <?xml version="1.0" encoding="UTF-8"?> -<Eintrag xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <art>todo</art> <Bezeichnung>tzhtzhzhtzh</Bezeichnung> <Datum>17.11.2014 13:24:56</Datum> </Eintrag> |
Jedoch wird der Eintrag, welcher gerade in dem XML File steht jedes mal überschrieben, wenn ich einen neuen Eintrag in die Listbox schreibe.
Die Save-Methode rufe ich momentan beim Zufügen eines Eintrages in die Listbox auf.
Es tut mir Leid falls ich etwas ganz Einfaches übersehe, ich bin jemand, der manchmal das Offensichtliche gekonnt ignoriert. :gruebel:
SuperEgon - Di 18.11.14 11:12
Naja jedes mal wenn du deine XMLSave-Methode Aufrufst erzeugst du scheinbar einen neuen Eintrag und speicherst den unter test.xml
Dann wird der natürlich überschrieben. Speichere doch den Inhalt der ganzen Listbox in dem XML und nicht jeden Eintrag in einer einzelnen. Dafür musst du nur deinen Code wie folgt anpassen...
C#-Quelltext
1: 2:
| XmlSerializer xs = new XmlSerializer(typeof(List<Eintrag>)); |
C#-Quelltext
1: 2:
| xs.Serialize(xw, (List<Eintrag>)DeineListbox.Items ); |
Moderiert von
Christian S.: C#-Tags hinzugefügt
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!