Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Deserialisieren/Ignorieren von neuen XML-Elementen
serial
myCSharp.de - Member



Dabei seit:
Beiträge: 902

Themenstarter:

Deserialisieren/Ignorieren von neuen XML-Elementen

beantworten | zitieren | melden

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
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von serial am .
private Nachricht | Beiträge des Benutzers
MrSparkle
myCSharp.de - Team

Avatar #avatar-2159.gif


Dabei seit:
Beiträge: 5.655
Herkunft: Leipzig

beantworten | zitieren | melden

Zitat von 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
private Nachricht | Beiträge des Benutzers
serial
myCSharp.de - Member



Dabei seit:
Beiträge: 902

Themenstarter:

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
yngwie
myCSharp.de - Member



Dabei seit:
Beiträge: 238

beantworten | zitieren | melden

Hallo serial,

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


Gruß
private Nachricht | Beiträge des Benutzers