Objketkliste serialize in XML Datei schlägt fehl

  • C#

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von stepper71.

    Objketkliste serialize in XML Datei schlägt fehl

    Hallo,

    ich möchte den Inhalt einer Objektliste als XML Datei speichern.
    Eigentlich sollte das mit folgendem Aufruf sehr simpel möglich sein:

    C#-Quellcode

    1. //Erstelle einen XML-Serialisierer für Objekte
    2. XmlSerializer serializer = new XmlSerializer(typeof(List<Variable>));
    3. FileStream file = new FileStream(@"c:\text.xml",FileMode.Create);
    4. //Serialisiere das übergebene Objekt und schreibe es in den FileStream.
    5. serializer.Serialize(file, variablenliste);
    6. //Schließe die XML-Datei.
    7. file.Close();


    Meine Objekt ist wie folgt aufgebaut:

    C#-Quellcode

    1. public class Variable
    2. {
    3. private int _name;
    4. public int Name
    5. {
    6. get{ return _name ;}
    7. }
    8. private int _typ;
    9. public int Typ
    10. {
    11. get { return _typ; }
    12. }
    13. private string[] _wert;
    14. public string[] Wert
    15. {
    16. get { return _wert; }
    17. }
    18. public int KTRBlockNr { get; set; }
    19. private string _rohwert;
    20. public string Rohwert
    21. {
    22. set {
    23. _rohwert = value;
    24. //Methode die die anderen Properties setzt
    25. VariableSeparieren();
    26. }
    27. }


    Die XML Datei die erzeugt wird, hat aber immer nur folgenden Inhalt:

    XML-Quellcode

    1. <?xml version="1.0"?>
    2. <ArrayOfVariable xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    3. <Variable>
    4. <KTRBlockNr>0</KTRBlockNr>
    5. </Variable>
    6. <Variable>
    7. <KTRBlockNr>0</KTRBlockNr>
    8. </Variable>
    9. <Variable>
    10. <KTRBlockNr>0</KTRBlockNr>
    11. </Variable>
    12. ....


    Der Blick mit "KTRBlockNr" wird so oft wiederholt wie Objekte in der Liste vorhanden sind.
    Warum wird nur diese eine Information in der XML Datei gespeichert?

    Ich gehe mal davon aus, das es am Aufbau meines Objekt liegt, aber woran genau?

    Bin für jede Hilfe dankbar.
    LG
    Stepper
    Du hast folgende Möglichkeiten:
    1. Nimm den DataContractSerializer
    2. Implementier IXmlSerializable wobei du das serializieren mehr oder minder selbst übernimmst
    3. Du machst nen public setter
    4. Nen komplett eigenen Serializer implementieren
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---