| Image via Wikipedia |
Jak zdeserializować plik XML jeżeli nie posiadamy klasy, która została zserializowana.Do zdeserializowania pliku XML potrzebujemy odpowiedną klasę, która przyjmę dane z pliku.
Za pomocą narzędzia znajdującego się w Windows SDK możemy potrzebne klasy wygenerować. Owym narzędziem rozwiązującym problem jest xsd.exe znajdujący się domyślnie w katalogu:
(Windows 7 x64)
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin
Aby wygenerować potrzebną mam klasę uruchamiamy Visual Studio Command Prompt znajdujący się w:
Start->Wszystkie programy -> Microsoft Visual Studio 2010 -> Visual Studio Tools
- xsd filename.xml – tworzony jest plik XSD dla naszego pliku XML. Jeżeli takowy plik już istnieje pomijamy ten krok.
- Plik XSD posiada opis schematu pliku XML (jakie pola występują w pliku)
- Warto przejrzeć wygenerowany plik ponieważ to narzędzie przyjmuje że każda dana jest stringiem, warto zamienić odpowiednie wpisy w pliku na inny typ
- Typ pola w XSD jest definiowany za pomocą atrybutu type, oprócz xs:string może zawierać następujące typy
- xs:dateTime
- xs:time
- xs:date
- xs:integer
- xs: float
- xs:double
- resztę typów możliwych do wprowadzenie można znaleźć na stronach W3C
- xsd filename.xsd /c – tworzone są klasy w języku C#
- Można również utworzyć klasę w innym języku korzystając z przełącznika /language.
- Przykłady:
- /language:VB – Visual Basic
- /language:CPP – C++/CLI
- Zdeserializować przy użyciu klasy XmlSerializer

Wszystko fajnie, ale mało elastycznie. Jeśli w pliku zamiast int pojawi się tekst "Niedostępne" - leżymy :) Powyższe podejście wymaga dużego zaufania do autora xml :) To tak bardziej w kontekście xml udostępnianego przez http.
OdpowiedzUsuń na zawsze@eM
OdpowiedzUsuń na zawszeOczywiście to rozwiązanie nie jest genialne i nie wprowadził bym go do kodu produkcyjnego.
Jednak dla mnie osoby która chciała jednorazowo wrzucić dane do mojego programu, rozwiązanie jest wręcz genialne.