Hallo,
ich habe folgendes Problem:
Ich habe Code per XSD erzeugt für ein spezielles XSD-Schema. Natürlich möchte ich XML-Files in Objekte deserialisieren. Nun kann es sein, das dem Schema/und den XML-Files neue Elemente hinzugefügt werden (Schema ist aber abwärtskompatibel, also alte Files sind immer valide gegen ein neues Schema). Nun ist das Problem bei der deserialisierung, dass wenn der XmlSerializer an das neue Element im XML kommt, er aller Elemente gleicher Ebene danach nicht mehr deserialisiert. Sollte er nicht eigentlich nur das unbekannte elemente ignorieren, und danach weiter fortfahren?
Gibt es hier eine Möglichkeit für mich?
mfg
Serial
Nun ist das Problem bei der deserialisierung, dass wenn der XmlSerializer an das neue Element im XML kommt, er aller Elemente gleicher Ebene danach nicht mehr deserialisiert.
Was bedeuted das? Gibt es eine Fehlermeldung?
Christian
Weeks of programming can save you hours of planning
Hallo,
nein das bedeutet, das er keine Objekte mehr erstellt.
Also folgendes einfaches (beispielhaftes) XML (auf diesem wurden Klassen erzeugt)
<Root>
<Child1>
<Child11 />
<Child11 />
</Child1>
<Child1>
<Child11/>
<Child11/>
</Child1>
</Root>
Wenn man nun deserialisiert, hab ich eben meine Rootklasse mit Liste von Child1 (oder 2 Properties, jenachdem wir Schema aussieht), und jedes Child1 eben 2 Properties von Child11.
Wenn ich das XML nun dahingehend verändere:
<Root>
<Child1>
<Child11 />
<Child22 /> <---- hier ist das neue Element
<Child11 />
</Child1>
<Child1>
<Child11/>
<Child11/>
</Child1>
</Root>
Dann habe ich bei dem ersten Child1-Objekt nur noch die erste Child11-Eigenschaft gefüllt, und die zweite bleibt leer, weil vorher das neue Element Child22 vorkommt. Das 2te Child1-Objekt ist wieder korrekt gefüllt.
mfg
Serial
Hallo serial,
das "billigste" wäre dafür zu sorgen dass die neuen Elemente immer an der letzten Position in der Liste auftauchen 😉
Gruß