Laden...

Deserialisieren/Ignorieren von neuen XML-Elementen

Erstellt von serial vor 11 Jahren Letzter Beitrag vor 11 Jahren 916 Views
S
serial Themenstarter:in
902 Beiträge seit 2007
vor 11 Jahren
Deserialisieren/Ignorieren von neuen XML-Elementen

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

5.658 Beiträge seit 2006
vor 11 Jahren

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

S
serial Themenstarter:in
902 Beiträge seit 2007
vor 11 Jahren

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

Y
238 Beiträge seit 2005
vor 11 Jahren

Hallo serial,

das "billigste" wäre dafür zu sorgen dass die neuen Elemente immer an der letzten Position in der Liste auftauchen 😉

Gruß