← Zpět na články

Odhalujeme .net - Deserializace - řešení

Aneb, jak se také nedočkat správné odpovědi. Zřejmě jsem zvolil velice záludnou otázku a přestože si ji přečetlo jistě více jak 70 lidí, žádný se nepokusil o její zodpovězení.

Nebudu tedy více napínat všechny ty, kteří čekají na správné řešení. Problémem, na který jsem narazil, bylo zpracovávání tzv. bílých znaků, whitespacehandling. Jak už jsem se zmínil, bylo potřeba serializovat a zpětně deserializovat malé konfigurační objekty a mezi jednotlivými vlastnostmi se objevila i samotná mezera.

Ta se ovšem při použití vstupního parametru typu StringReader nepřevedla zpět. Tudíž bylo nutné explicitně vytvořit XmlTextReader a teprve ten použít pro deserializaci xml řetězce. Pokud se podíváte blíže na implementaci metody Deserialize() např. pomocí Reflectoru, zjistíte, že se interně vytváří právě XmlTextReader a nastavuje se mu property WhitespaceHandling. A právě v nastavení této property ležel ten hlavní důvod a úskalí celého řešení.

Takže cena pro tuto chvíli zůstává pro mě.

Comments

Comment 1

Anonymous - on Oct 29 2006 at 11:45 PM

Zdravim Jardo, testuji funkcnost komentaru. Protoze kdyz jsem na tvoji hadanku odpovidal, tak ti moje odpoved nedorazila nebo neprosla. BTW: Strefil jsem se ;)

Comment 2

Anonymous - on Oct 30 2006 at 12:48 AM

Ahoj René, tak jsem prošel celou DB a tvůj komentář jsem nenašel. Těch nevyžádaných (pouze url) zase tolik nemám, abych náhodou smazal zrovna tvůj. Tak teď nevím, zda nezačít podezírat CS. Pravda, těch komentářů tu tolik nemám, takže je klidně možné, že to občas zahapruje. Díky

BTW: tak teď si nejsem jist, že by skutečně chybka při přidávání druhého komentáře v pořádí?

Comment 3

Anonymous - on Oct 30 2006 at 9:57 PM

Nevim Jardo, komentar jsem poslal a pak se CS yacal chovat "divne". Myslim, ze se objeila nejaka chybova stranka.

Pokud by se to opakovalo, dam ti vedet.

Comment 4

Anonymous - on Oct 31 2006 at 12:18 PM

Tak se nakonec nejednalo o chybu CS ale moji. Mám vložené některé CS moduly a jeden z nich nepovolil víc jak jeden komentář k příspěvku. Tímto se omlouvám. Díky