Contents
- Introduction
- Features
- How to run
- Window Mode
- Tray Application Mode
- Console Mode
- Help
- Configuration
Many times, we come across the need of parsing XML document and creating XML schema or common language runtime classes/entities. These entities are later passed between multiple methods, stored as configuration or used to perform some manipulation. Hand writing code for parsing these entities from XML document is tedious.
Microsoft has a nifty little tool called xsd.exe which lets you create serializable classes for the .NET framework from an XSD or XML file. Unfortunately, it doesn’t come with the latest versions of Visual Studio and you have to download the Windows SDK to get hold of it.
This article presents the new Cinchoo GUI interface to xsd.exe tool to parse XML documents and generate entities. This new interface is built using Cinchoo framework, using most of its features like Configuration, Command line parsing, Application host, binding to controls, etc. This is one of the working examples of building an application using this versatile .NET framework easily.
Cinchoo Xsd tool provides the following features:
- Simplified GUI interface
- Support of Nested XML files (refer to Handling Nested Xml files article for more information about it)
- Can run as console mode (passing /#AM:Console as command line argument)
- Can run as tray application (on minimizing the window)
This tool can be started as:
- Console Application
- Windows Application
- Tray Application
By default, if you run the executable (ChoXsd.exe). This will start as Windows application. The main window looks like below:
Image 3.1.1 Main window
- XML File Path - Input XML file path
- Output Directory - Destination directory where the generated files are created. If not specified, the generated files will be created under the input XML file directory.
- Options - Please refer to the Microsoft Xsd.exe tool document for each option
- Status - All the generation process status messages are posted
- Generate - Button is to start the generation process
- Cancel - Button to cancel the generation process
Sometimes, you may want to keep this tool running all the time and quickly go back to get access to this tool to carry out generation of entities. In such cases, you can let them run in tray mode. By pressing 'minimize' button, the tool will be made to run in tray mode.
In this mode, the below features are available to you. These will be available when you right click on this tool application icon in tray taskbar.
- Open - To restore the window
- Always on Top - To keep the window as topmost of all other Windows applications
- Run at System Startup - This option lets the application start up automatically when system starts
- Show in Taskbar - To show the application in the Taskbar
This tool can be started as Console Application by passing /#AM:Console command line parameter to the executable.
Listing 3.3.1 Running as console mode
>ChoXsd.exe /#AM:Console
To get help of the application, pass /? in command line.
Listing 3.3.1.1 Getting help
>ChoXsd.exe /#AM:Console /?
ChoXsd [Version 1.0.0.1]
Copyright c 2014
CHOXSD [/order] [/f] [/edb] [/n:<string>] [/l:<string>] [/e:<string>] [/o:<strin
g>] xmlfile [/c] [/eld] [/d]
/order Generate explicit order identifiers on all particle members.
/f Generate fields instead of properties.
/edb Implement INotifyPropertyChanged interface on all generated
types to enable data binding..
/n The namespace for generated class files. The default
namespace is the global namespace.
/l The language to use for the generated code. Choose from
'CS', 'VB', 'JS', 'VJS', 'CPP' or provide a fully-qualified
name for a class implementing
System.CodeDom.Compiler.CodeDomProvider. The default
language is 'CS' (CSharp).
/e Element from schema to process.
/o The output directory to create files in. The default is the
current directory.
xmlfile Name of an xml file to infer xsd schema from.
/c Generate classes for this schema.
/eld Generate LINQ-enabled sub-classed Dataset for the schemas
provided.
/d Generate sub-classed DataSet for this schema.
Below is a screenshot of help.
Image 3.3.1.1 Console window
UPDATE
This application uses Microsoft Xsd.exe tool to generate entities. This program automatically discovers Xsd.exe tool under 'C:\Program Files\Microsoft SDKs\Windows' folder, remember it at startup. If you wish to use a different version of this tool (Xsd.exe) in a different location, you can configure it by opening [AppExe].config file and specifying Microsoft SDK path containing Xsd.exe tool in 'SDKDirectory' appsetting.
Listing 4.1 [AppExe].config file
="1.0"
<configuration>
<appSettings>
<add key="SDKDirectory" value="C:\Program Files\Microsoft SDKs\Windows" />
</appSettings>
</configuration>