Tworzenie klasy do deserializacji pliku XML

Español: fotoXML
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 SDKsWindowsv7.0ABin

Aby wygenerować potrzebną mam klasę uruchamiamy Visual Studio Command Prompt znajdujący się w:
Start->Wszystkie programy -> Microsoft Visual Studio 2010 -> Visual Studio Tools

Odtworzy się nam okno wiersza poleceń przechodzimy w nim do katalogu z naszym plikiem .xml i wykonujemy następujące czynności:

  • 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
Enhanced by Zemanta