Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Petr Nymsa
Tvůrce
Avatar
Petr Nymsa:21.4.2014 12:48

Ahoj, potřeboval bych menší pomoc. API mi vrací následující xml

<?xml version="1.0"?>
<users>
    <user>
        <id>93</id>
        <name>Joost</name>
        <description/>
        <photo/>
        <mail>[email protected]</mail>
    </user>
</users>

XmlSerializer mi hlásí že xml je nevalidní (Error in XML document (2,2). Nějak nemůžu vyzkoumat co se mu nelíbí.

Kód pro deserializaci

srl = new XmlSerializer(typeof(ObservableCollection<T>));

            XmlReader reader = XmlReader.Create(new StringReader(xml));
            ObservableCollection<T> list = new ObservableCollection<T>();
            list = (ObservableCollection<T>)srl.Deserialize(reader);
            return list;

Používám ho už dlouho a vždy mi fungovalo. Takže někde v tom XML je nejspíše chyba. Výstup XML můžu libovolně upravit - API je má vlastní

Odpovědět
21.4.2014 12:48
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na Petr Nymsa
Jan Vargovský:21.4.2014 13:00

Prozkoumej vice tu vyjimku.

 
Nahoru Odpovědět
21.4.2014 13:00
Avatar
coells
Tvůrce
Avatar
Odpovídá na Petr Nymsa
coells:21.4.2014 13:29
  1. nejsem si jistý, jestli XmlSerializer podporuje ObservableCollec­tion, ale v praxi bych to rozhodně nepoužíval
  2. tak jako tak budeš potřebovat vlastní typ označený atributem [XmlRoot], kolekci dej až do něj
  3. při složitější deserializaci musíš serializéru říct, které typy může očekávat, použij konstruktor (Type, Types[])
  4. vytvoř si strukturu v paměti a ulož si ji na disk, ať víš, jak má správně vypadat XML - většinou je potřeba atribut xsi:type

Pracuju se tímhle typem serializace na hodně komplexních XML a vždycky je lepší mít svoje vlastní jednoduché třídy označené atributy na XML serializaci.

 
Nahoru Odpovědět
21.4.2014 13:29
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.