neděle 19. dubna 2015

Generování .NET tříd podle XSD schematu XML souboru

Určitě jste někdy parsovali cizí XML.Možná Vás bude zajímat jak to zvládnout co nejrychleji.
Pokud máte jednoduché XML a chcete ho deserializovat do objektu musíte si tyto objekdy nejdříve nachystat. To bývá docela makačka, ale na každou makačku většinou existuje nějaká lopata.

V našem případě použijeme nástroj XSD, který je součástí Visual Studia a najdeme ho například v adresáři c:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools\x64\

Pokud tomuto programu předhodíte nějaké XSD tak Vám k němu vygenerovat jednotlivé třídy.
Pokud nemáte XSD můžete si ho nechat vygenerovat podle XML. V dalším kroku potom z XSD necháme vygenerovat třídy.

"c:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools\xsd.exe" Data.xml

"c:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools\xsd.exe" Data.xsd /c /n:Bt.Transform.Data


Pokud XML má více namespace a XSD šablon, můžeme je předat v řadě za sebou v příkazové řádce a nebo pomocí XML souboru [2].

Pojmenování výstupního soubboru 
Použijete-li více xsd šablon tak aplikace vygeneruje soubor který se bude jmenovat podle všech použitých schemat. Použijete li jich opravdu hodně, tak aplikace skončí chybou ve smyslu, že název soubboru je příliš dlouhý. Naštěstí má v sobě aplikace xsd.exe chybu [3], která přeruší skládání jmen souborů za sebe a začne znovu. Což znamená že když použijete v cestě k souboru ".\" a umístíte ho na konec příkazové řádky nebo jako poslední Schema element v XML, bude se výstupní soubor jmenovat podle něj.

S touto pomocí budete generovat XML faktury do vašeho oblíbeného účetnictví během jednoho dne a né za 14 dní.
Stejně dobrou službu vám udělá při synchronizaci kurzovních lístků, nabídek realitních kanceláří, autobazarů nebo zboží v e-shopech.

Pokud máte nějaké otázky klidně je napište do komentáře nebo na můj e-mail.

Zdroj:
  1. http://blogs.msdn.com/b/yojoshi/archive/2011/05/14/xml-serialization-and-deserialization-entity-classes-with-xsd-exe.aspx
  2. http://stackoverflow.com/questions/1140495/multiple-xsd-schema-files-to-c-sharp-classes
  3. https://social.msdn.microsoft.com/Forums/en-US/8ab41df8-69d4-44e4-8795-436088f230e2/xsdexe-path-is-too-long-after-being-fully-qualified?forum=xmlandnetfx
  4. https://msdn.microsoft.com/en-us/library/58a18dwa(v=vs.110).aspx

Žádné komentáře:

Okomentovat