SkillAgentSearch skills...

XmlSchemaClassGenerator

Generate C# classes from XML Schema files

Install / Use

/learn @mganss/XmlSchemaClassGenerator
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

XmlSchemaClassGenerator

Nuget Build status codecov.io netstandard2.0 net462

A console program and library to generate XmlSerializer compatible C# classes from XML Schema files.

Features

  • Map XML namespaces to C# namespaces, either explicitly or through a (configurable) function
  • Generate C# XML comments from schema annotations
  • Generate DataAnnotations attributes from schema restrictions
  • Generate custom attributes for schema restrictions that aren't covered by standard DataAnnotations (see below)
  • Use Collection<T> properties (initialized in constructor and with private setter)
  • Map xs:integer and derived types to the closest possible .NET type, if not possible - fall back to string. Can be overriden by explicitly defined type (int, long, or decimal)
  • Automatic properties
  • Pascal case for classes and properties
  • Generate nullable adapter properties for optional elements and attributes without default values (see below)
  • Optional support for PCL
  • Optional support for INotifyPropertyChanged
  • Optional support for Entity Framework Code First (automatically generate key properties)
  • Optionally generate interfaces for groups and attribute groups
  • Optionally generate one file per class
  • Support for nullable reference types (NRTs) through AllowNullAttribute and MaybeNullAttribute
  • Optionally generate a common specific type for union member types

Unsupported:

  • Some restriction types
  • Recursive choices and choices whose elements have minOccurs > 0 or nillable="true" (see below)
  • Possible name clashes and invalid identifiers when names contain non-alphanumeric characters
  • Groups with maxOccurs > 0

Usage

For command line use, choose your preferred installation:

<pre> Usage: xscgen [OPTIONS]+ xsdFile... Generate C# classes from XML Schema files. Version ... xsdFiles may contain globs, e.g. "content\{schema,xsd}\**\*.xsd", and URLs. Append - to option to disable it, e.g. --interface-. Options: -h, --help show this message and exit -n, --namespace=VALUE map an XML namespace to a C# namespace Separate XML namespace and C# namespace by '='. A single value (no '=') is taken as the C# namespace the empty XML namespace is mapped to. One option must be given for each namespace to be mapped. A file name may be given by appending a pipe sign (|) followed by a file name (like schema. xsd) to the XML namespace. If no mapping is found for an XML namespace, a name is generated automatically (may fail). --nf, --namespaceFile=VALUE file containing mappings from XML namespaces to C# namespaces The line format is one mapping per line: XML namespace = C# namespace [optional file name]. Lines starting with # and empty lines are ignored. --tns, --typeNameSubstitute=VALUE substitute a generated type/member name Separate type/member name and substitute name by '='. Prefix type/member name with an appropriate kind ID as documented at: <a href="https://t.ly/HHEI">https://t.ly/HHEI</a>. Prefix with 'A:' to substitute any type/member. --tnsf, --typeNameSubstituteFile=VALUE file containing generated type/member name substitute mappings The line format is one mapping per line: prefixed type/member name = substitute name. Lines starting with # and empty lines are ignored. -o, --output=FOLDER the FOLDER to write the resulting .cs files to -d, --datetime-offset map xs:datetime, xs:date and xs:time to System. DateTimeOffset instead of System.DateTime --do, --dateOnly map xs:date and xs:time to System.DateOnly and System.TimeOnly instead of System.DateTime -i, --integer=TYPE map xs:integer and derived types to TYPE instead of automatic approximation TYPE can be sb[yte], sh[ort], i[nt], l[ong], ni[ nt], b[yte], us[hort], ui[nt], ul[ong], nui[nt], or d[ecimal] --fb, --fallback, --use-integer-type-as-fallback use integer type specified via -i only if no type can be deduced -e, --edb, --enable-data-binding enable INotifyPropertyChanged data binding -r, --order emit order for all class members stored as XML element -c, --pcl PCL compatible output -p, --prefix=PREFIX the PREFIX to prepend to auto-generated namespace names -v, --verbose print generated file names on stdout -0, --nullable generate nullable adapter properties for optional elements/attributes w/o default values -f, --ef generate Entity Framework Code First compatible classes -t, --interface generate interfaces for groups and attribute groups (default is enabled) -a, --pascal use Pascal case for class and property names ( default is enabled) --av, --assemblyVisible use the internal visibility modifier (default is false) -u, --enableUpaCheck should XmlSchemaSet check for Unique Particle Attribution (UPA) (default is enabled) --ct, --collectionType=VALUE collection type to use (default is System. Collections.ObjectModel.Collection`1) --cit, --collectionImplementationType=VALUE the default collection type implementation to use ( default is null) --csm, --collectionSettersMode=Private, Public, PublicWithoutConstructorInitialization, Init, InitWithoutConstructorInitialization generate a private, public, or init-only setter with or without backing field initialization for collections (default is Private; can be: Private, Public, PublicWithoutConstructorInitialization, Init, InitWithoutConstructorInitialization) --ctro, --codeTypeReferenceOptions=GlobalReference, GenericTypeParameter the default CodeTypeReferenceOptions Flags to use ( default is unset; can be: GlobalReference, GenericTypeParameter) --tvpn, --textValuePropertyName=VALUE the name of the property that holds the text value of an element (default is Value) --dst, --debuggerStepThrough generate DebuggerStepThroughAttribute (default is enabled) --dc, --disableComments do not include comments from xsd --nu, --noUnderscore do not generate underscore in private member name ( default is false) --da, --description generate DescriptionAttribute (default is true) --cc, --complexTy

Related Skills

View on GitHub
GitHub Stars743
CategoryDevelopment
Updated4d ago
Forks209

Languages

HTML

Security Score

100/100

Audited on Apr 3, 2026

No findings