Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Create MULTIPLE class files based on an XSD

I may be attempting something that is not possible with the XSD tool but I wanted to ask before moving on to a simpler solution.

I have an XSD file that has multiple elements (and multiple complex types) that will generate multiple classes in one code file (I do not like this). For the sake of having clean and readable class files generated from the XSD tool, I would like for each element to be placed in a seperate code file, not all placed in one code file as partial classes.

Does anyone know how to do this? Or is my only solution for this breaking the XSD into one schema for each of the xml elements in the schema?

The MSDN article http://msdn.microsoft.com/en-us/library/x6c1kb0s(v=VS.100).aspx does not provide language that specifies whether or not this can be done.

Thanks in advance for any answers or comments.

like image 833
TheDevOpsGuru Avatar asked Jul 11 '11 18:07

TheDevOpsGuru


2 Answers

This doesn't answer your question directly, but I wanted to throw a couple things out:

I generally find it counter-productive to separate generated code. I always like to generally follow the "one class per file" rule, but I make an exception here, because I often deal with very large schemas. Even in their own directory, I don't want to have to diff tens (to hundreds) of files when I generate a new version of the code. I find it very convenient to have all the generated code diffable in one file.

Now, to offer a possible solution - Resharper has the ability to pull all the classes out of a file and put them in their own files. If you right click the file in the solution explorer, you can say Refactor → Move types into matching files.... Of course, this isn't anywhere near as convenient as just generating it this way, but I don't know of a tool that will do that.

like image 62
womp Avatar answered Nov 09 '22 13:11

womp


The problem I'm trying to solve was either in separate class files or one singular, but unique classes rather than the same namespace containing multiple classes. As a result, I was looking for a similar answer and found this reference to share Getting xsd.exe To Not Create Duplicate Classes

This is a simple fix, but it took me a long time to figure out. You have to use xsd.exe to compile all of your classes at once, so rather than running two separate commands, you just need to run one: C:\Solution\Project>xsd.exe Types.xsd Request.xsd Response.xsd /c Now you have one file, Response.xsd, with all three classes in it.

like image 42
bluelightning1 Avatar answered Nov 09 '22 15:11

bluelightning1