tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
1
ZUGRIFFE
1101
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    NotAUser Tutorials.de Gastzugang
    Hallo zusammen,

    mein Problem ist, dass ich so eine Struktur zu XML serialiseren will (und wieder zurück):

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    
    public class Container
    {
         public ClassA[] Classes { get; set;}
     
    }
     
    public class ClassA
    {
          [XmlAttribute(AttributeName = "a")]
          public int PropA { get; set; }
    }
     
    public class ClassB : ClassA
    {
          [XmlAttribute(AttributeName = "b")]
          public string PropB { get; set; }
    }
     
    public class ClassC: ClassA
    {
          [XmlAttribute(AttributeName = "b")]
          public boolean PropC { get; set; }
     
    }

    und zwar wenn es geht zu einer xml mit der Struktur:
    Code :
    1
    2
    3
    4
    5
    
    <Container>
        <ClassB a=1 b="Hallo" />
        <ClassC a=2 c=false />
                ...
    </Container>

    Ich benutze den XmlSerialisierer
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
                using (var stream = File.OpenWrite(path))
                {
                    var settings = new XmlWriterSettings { Indent = true, OmitXmlDeclaration = true };
     
                    using (var writer = XmlWriter.Create(stream, settings))
                    {
                        var serializer = new XmlSerializer(typeof(Container));
                        if (writer != null)
                        {
                            serializer.Serialize(writer, container);
                        }
                    }
                }

    Allerdings bringt er folgende Exception mit der ich Null-bis-Gar-Nichts anfangen kann:
    Code :
    1
    2
    3
    
    "Der Typ SimpleTester.ClassB wurde nicht erwartet. 
    Verwenden Sie das XmlInclude- oder das SoapInclude-Attribut,
     um Typen anzugeben, die nicht statisch sind."
    (KlassenNamen wurden abgeändert)

    Ich bin für jede Hilfe dankbar!
    Einen schönen Abend noch zusammen!
     

  2. #2
    Notauser Tutorials.de Gastzugang
    Also,

    es hat zwar keiner geantwortet, aber vielleicht brauch ja jemand anderes auch die Lösung:

    Code :
    1
    2
    3
    4
    5
    6
    
    public class Container
    {
            [XmlElement(Type = typeof(ClassC)), 
            XmlElement(Type = typeof(ClassB))]
            public ClassA[] Classes { get; set; }
    }

    Fast schon zu einfach... aber was ist nicht einfach, wenn man es weiß.
     

Ähnliche Themen

  1. Serialisierung
    Von athlord im Forum Java
    Antworten: 6
    Letzter Beitrag: 18.12.10, 14:17
  2. Serialisierung
    Von Steve222 im Forum Java Grundlagen
    Antworten: 3
    Letzter Beitrag: 21.09.10, 18:26
  3. Serialisierung + ClassLoader
    Von kurwajebana im Forum Java
    Antworten: 2
    Letzter Beitrag: 17.04.10, 19:46
  4. XML - Serialisierung
    Von Apprauuuu im Forum C/C++
    Antworten: 0
    Letzter Beitrag: 19.07.08, 17:13
  5. Serialisierung vs. Marshaling?
    Von flashray im Forum Java
    Antworten: 3
    Letzter Beitrag: 15.04.07, 18:12