Navigatie

Contact

Send mail to the author(s) E-mail

View Richard Soeteman's profile on LinkedIn

RSS 2.0 | Atom 1.0 | CDF

Archief

Categorieën

Blogroll

Disclaimer
The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.

Sign In

Zoeken

# Saturday, 13 May 2006
Saturday, 13 May 2006 00:18:49 (GMT Daylight Time, UTC+01:00) ( Tools )

This Blog is not active anymore, further posts will be available on my company website. Read new posts here

Afgelopen week moest ik een class genereren op basis van een redelijk complex XML Schema. Hiervoor wilde ik niet XSD.exe gebruiken. XSD.exe kent een aantal beperkingen. Het stoort me bijvoorbeeld dat ik in mijn implementatie gebruik moet maken van arrays, terwijl ik gebruik wil maken van collecties. De bekende vervanger XSDObjectGen hernoemt enumerations iets wat ik ook niet wil.

Uiteindelijk heb ik gekozen voor CodeXS. De output van CodeXS is schoon. Hij neem de output van xsd.exe als de basis. De uiteindelijke code wordt gegenereerd d.m.v. CodeDom. Wanneer een schema gebruik maakt van included schema’s kan je de locatie opgeven zodat deze ook worden meegenomen. Verder kan je de tool zelf uitbreiden d.m.v. het implementeren van de ICodeModifier  interface en het opgeven van je assembly locatie. Dit vereist wel overigens wel kennis van CodeDom. Een serializer wordt standaard mee gegenereerd.

Een tweetal issues dat ik tegenkwam:

  • Let wel op dat je de parameters goed specificeert want daarin is CodeXS wel wat foutgevoelig en de foutmeldingen worden standaard niet getoond.
  • Zorg ervoor dat de bin folder van ConsoleApp onderstaande bestanden bevat:
    - cxsc.Net.exe
    - CodeXS.Application.CommandLine.Net.dll
    - CodeXS.Schema.Net.dll
    - CodeXS.Schema.StandardCodeModifier.Net.dll
    - Refly.Net.dll
CodeXS is ook Online te gebruiken. De bestanden worden dan in een ZIP file geplaatst, welke te downloaden is via de site.

CodeXS is via deze url als Visual Studio project te downloaden en via deze url online te gebruiken.
Comments are closed.