Benutzer mit den meisten Antworten
ListView in einer XML-Datei speichern

Frage
-
Hallo,
ich habe folgendes Problem:
Ich würde gerne eine zuvor gefüllte ListView(Anrede, Vorname, Nachname) in ein XML-Dokument speichern. Bin leider noch Anfänger was C# betrifft und würde mich freuen wenn ihr mir helfen könntet.Anbei der Code:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Xml.Serialization; using System.IO; namespace xmlneu { public partial class Form1 : Form { public Form1() { InitializeComponent(); } public void button1_Click(object sender, EventArgs e) { List<Person> personen = new List<Person>(); Person a = new Person(); personen.Add(a); Daten_erfassen(a); Daten_ausgeben(a); } public void button2_Click( object sender, EventArgs e) { System.Windows.Forms.FolderBrowserDialog objDialog = new FolderBrowserDialog(); objDialog.Description = "Beschreibung"; objDialog.SelectedPath = @"C:\Benutzer\Ureich\Desktop"; // Vorgabe Pfad (und danach der gewählte Pfad) DialogResult objResult = objDialog.ShowDialog(this); if (objResult == DialogResult.OK) { MessageBox.Show("Neuer Pfad : " + objDialog.SelectedPath); //personObjekt erstellen und mit Werten befüllen ListViewItem eintrag = new ListViewItem(); //personObjekt serialisieren SerializePersonToXML(eintrag,objDialog); } else MessageBox.Show("Abbruch gewählt!"); } public void SerializePersonToXML(ListViewItem eintrag, FolderBrowserDialog objDialog) { FileStream file = new FileStream(objDialog.SelectedPath + "\\Person.xml", FileMode.Create); //Erstelle einen XML-Serialisierer für Objekte vom Typ ListView XmlSerializer serializer = new XmlSerializer(typeof(ListView)); //Erstelle einen FileStream auf die Datei, in die unserer //person-Objekt in XML-Form gespeichert werden soll. //Serialisiere das übergebene person-Objekt (blogObj) //und schreibe es in den FileStream. serializer.Serialize(file, eintrag); //Schließe die XML-Datei. file.Close(); } public void Daten_erfassen(Person a) { a.Anrede = textBox1.Text; a.Vorname = textBox2.Text; a.Nachname = textBox3.Text; } public void Daten_ausgeben(Person a) { ListViewItem eintrag = new ListViewItem(a.Anrede); eintrag.SubItems.Add(a.Vorname); eintrag.SubItems.Add(a.Nachname); listView1.Items.Add(eintrag); } } }
Ich komme nicht weiter, es wird immer diese Fehlermeldung angezeigt:
Eine nicht behandelte Ausnahme des Typs "System.InvalidOperationException" ist in System.Xml.dll aufgetreten.
Zusätzliche Informationen: Beim Generieren des XML-Dokuments ist ein Fehler aufgetreten.Vielen Dank im Voraus :)
Antworten
-
Hallo,
momentan versuchst du ein ListViewItem als ListView zu serialisieren - das geht sowieso nicht. Besser wäre es jedoch nur ein Person-Objekt zu serialisieren:var person = new Person() { Anrede = eintrag.SubItems[0].ToString(), Vorname = eintrag.SubItems[1].ToString(), Nachname = eintrag.SubItems[2].ToString() };
Tom Lambert - C# MVP
Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets- Als Antwort vorgeschlagen Aleksander Chalabashiev Dienstag, 18. November 2014 07:18
- Als Antwort markiert Aleksander Chalabashiev Freitag, 28. November 2014 08:23