Autor Beitrag
GURKE deluxe
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 91
Erhaltene Danke: 1

Win 7 Home Premium x64, Win XP Home Edition v2002
C# Microsoft Visual C# 2010 Express
BeitragVerfasst: Mo 08.08.11 11:44 
Hallo,
Ich habe folgenden Code:
ausblenden volle Höhe 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:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
public class SpeicherDatei
{
    public decimal Inflation;
    public Person[] Personen = new Person[2];

    public class Person
    {
        public decimal JahrRentenbeginn;
        public decimal JahreBisZurRente;
        public decimal Rentnerjahre;
    }

    public List<object> Ausgaben = new List<object>();
    public List<object> Einnahmen = new List<object>();
}


private void speichernToolStripMenuItem_Click(object sender, EventArgs e)
{
    SpeicherDatei SD = new SpeicherDatei();
    SD.Inflation = dInflation;
    SpeicherDatei.Person[] SDP = new SpeicherDatei.Person[2];
    SDP[0] = new SpeicherDatei.Person();
    SDP[0].JahreBisZurRente = dJahreBisZurRente;
    SDP[0].JahrRentenbeginn = dJahrRentenbeginn;
    SDP[0].Rentnerjahre = dRentnerjahre;

    SDP[1] = new SpeicherDatei.Person();
    SDP[1].JahreBisZurRente = nudGaZPJahreBisZurRente.Value;
    SDP[1].JahrRentenbeginn = nudGaZPInRenteGehenImJahr.Value;

    SD.Personen = SDP;

    foreach (TreeNode Tn in tvAusgaben.Nodes)
        SD.Ausgaben.Add(Tn.Tag);

    foreach (ListViewItem lvi in lvEinnahmen.Items)
        if (lvi.Text != "")
            SD.Einnahmen.Add(lvi.Tag);
        else
            break;

    XmlSerializer ser = new XmlSerializer(typeof(SpeicherDatei));
    //FileStream str = new FileStream(@"C:\testdatei.xml", FileMode.OpenOrCreate);
    TextWriter tw = new StreamWriter(@"C:\testdatei.xml");
    ser.Serialize(tw, SD);
    tw.Close();
}


Führe ich nun speichernToolStripMenuItem_Click aus, so wirft er folgenden Fehler auf:

"System.InvalidOperationException
Beim Generieren des XML-Dokuments ist ein Fehler aufgetreten."

Ich habe ein bisschen rumprobiert und herausgefunden, er wohl Probleme mit SD.Ausgaben und SD.Einnahmen hat. Leere ich diese vor dem Speichern, bzw, befühle sie erst gar nicht, so speichert er die Datei ganz normal ab und besitzt noch alle Information, wenn ich diese öffne. Die Tags die ich abspeichere sind Klassen-Objekte ähnlich der Klasse Speicherdatei.

Ich arbeite das erste Mal mit xml-Dateien und den Code zum Abspeichern habe ich im Internet gefunden...

Gruß
Julian

Moderiert von user profile iconKha: C#-Tags hinzugefügt
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Mo 08.08.11 11:54 
Zu der Exception wird es doch eine Inner Exception geben, oder nicht? Welche Klassen beinhalten die Lists? Die wirst du mit XmlInclude dem Serializer noch bekannt machen müssen, wobei object für mich schon etwas merkwürdig aussieht.

_________________
>λ=
GURKE deluxe Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 91
Erhaltene Danke: 1

Win 7 Home Premium x64, Win XP Home Edition v2002
C# Microsoft Visual C# 2010 Express
BeitragVerfasst: Fr 02.09.11 14:59 
Danke für deine Antwort. Nachdem ich die InnerException angesehen habe, war mir der Fehler klar und konnte ihn schnell beheben :)