Thomas Kramer

IT-COW | privates IT-Blog von (C) Thomas Kramer

Reminder: Codegenerator XSD

By Administrator at April 19, 2010 00:17
Filed Under: .net-Framework, C#, Reminder

Ab dem .NET-Framework 2.0 gibt es das Kommandozeilen-Programm xsd.exe, mit dem XML-Schema-Dateien in normale Klassen oder typisierte Datasets umgewandelt werden können. Danach könnte das generierte Dataset zur Laufzeit mit Daten gefüllt werden, das Schema des Datasets muss also nicht unbedingt in Kleinarbeit selbst angelegt werden. Dazu sollte am besten der Pfad zur xsd.exe der Windows-Path-Variable hinzugefügt werden, ansonsten muss man in der Eingabeaufforderung immer erst zu dem Programmpfad navigieren und benötigt desweiteren Administrator-Rechte (unverständlich warum das Setup beim Visual Studio das nicht bereits macht).

 

Der Aufruf ist prinzipiell einfach, so das ich es nicht explizit niederschreibe. Die Datei mit den generierten Klassen enthält danach folgenden Header, der auf den Codegenerator hinweist:

 

//------------------------------------------------------------------------------
// <auto-generated>
//     Dieser Code wurde von einem Tool generiert.
//     Laufzeitversion:2.0.50727.3082
//
//     Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
//     der Code erneut generiert wird.
// </auto-generated>
//------------------------------------------------------------------------------

//
// Dieser Quellcode wurde automatisch generiert von xsd, Version=2.0.50727.42.
//

 

Prinzipiell ein praktisches Programm, jedoch gibt es Grenzen: in meinen Tests wurde für selbstdefinierte Enumerationen zwar der Methodentyp korrekt angelegt - jedoch die Einschränkung, welche Werte diese Enumeration annehmen darf, wird nicht implementiert.

 

Nachdem die Daten dieses Datasets über die Standard-Methoden des .NET-Frameworks in eine XML-Datei umgewandelt wurden, ist also nicht unbedingt eine weitere Validierung gegen das XML-Schema überflüssig.

 

Außerdem wichtig ist natürlich, das händisch vorgenommene Änderungen an diesem Quellcode mit jedem Generieren überschrieben werden.

 

Weitere Codegeneratoren sind beispielsweise:

 

  • UML-Programme
  • RegEx-Programme
  • NStub, ein Klassengenerator für Unit-Tests

 

Bei meiner Suche bin ich übrigens auch auf das Programm CodeSmith gestoßen, leider habe ich es noch nicht getestet. Für vordefinierte Regular Expressions gibt es übrigens auch eine frei einsehbare Library, RegExLib.com.

 

Tag-Wolke

Monats-Liste