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.