Multiple XSD schema files to C# classes

40,684

Solution 1

Use the XSD.EXE program, but pass all of the schemas to the program on the same command line.

For example:

> xsd /c qbxmltypes130.xsd QBUqbxmlops130.xsd QBUqbxmlso130.xsd QBUqbxml130.xsd

Will emit a class named:

qbxmltypes130_QBUqbxmlops130_QBUqbxmlso130_QBUqbxml130.cs

In this case these are Quickbooks Desktop SDK xsd files, and the final file has types it depends on in the first 3 files. It won't emit on its own, but with its dependencies it works as desired.

Note that there is a /parameters:<file> switch that allows you to specify a file of command line parameters. I remember using it in one project for a similar reason.

XSD.EXE doc has the parameter format.

Solution 2

I for one found the examples in the MSDN doc a bit lacking. Here's an example parameters file for the issue codemeit described:

<xsd xmlns='http://microsoft.com/dotnet/tools/xsd/'>
<generateClasses language='CS' namespace='Namespace.subnamespace'>
    <schema>FirstSchema.xsd</schema>
    <schema>AnotherSchema.xsd</schema>
    <schema>LastSchema.xsd</schema>
</generateClasses>
</xsd>
Share:
40,684

Related videos on Youtube

Ray Lu
Author by

Ray Lu

...AI & Blockchain...

Updated on January 27, 2020

Comments

  • Ray Lu
    Ray Lu almost 4 years

    What is the best way to generate C# classes from multiple XSD schema files?

    Some XSD schema files may have dependency to the other, I am trying to avoid duplicated C# classes being generated.

  • ewall
    ewall about 13 years
    Thanks, @anony_mouse -- I was looking for a good example of that syntax!
  • Raven almost 10 years
    if you get the error "specified path or file name too long" try placing a ".\" infront of the last file and it resolves the problem, note that the output file will then be named by the last file..
  • HelpMatters over 9 years
    Just adding an example "xsd.exe /classes /n:{your_namespace} {file1}.xsd {file2}.xsd {file3}.xsd /out:{your output folder}"
  • setzamora
    setzamora over 8 years
    No need to use Altova XML Spy for generating C# classes from XSDs with multiple references from now on.
  • PellucidWombat
    PellucidWombat almost 8 years
    A final addition to the excellent example @vivekp gave: The last file named in the sequence seems to be the one used for generating the class file name. So his example would produce the class file {your output folder}\{file3}.cs
  • Hüseyin Yağlı
    Hüseyin Yağlı almost 6 years
    Gives an error and doesn't generate classes if you have circular group references.
  • Nayan Hodar over 5 years
    Thanks, for the answer.