如何从XSD生成支持可空类型的现代C#9类?求替代xsd.exe工具
解决ISO20022 XSD转现代C#类的方案
能不能让xsd.exe生成现代C#类?
xsd.exe是个比较老旧的工具,本身不支持现代C#的可空值类型这类特性,也没法直接把多个Schema的不同命名空间映射到同一个C#命名空间。虽然可以手动修改生成后的代码,或者写脚本做后续处理,但过程繁琐还容易出错,不太适合用在ISO20022这种复杂Schema的场景里。
推荐的替代工具
免费工具
1. dotnet-svcutil(.NET官方工具)
- 适配.NET Core/.NET 5+,生成的代码符合现代C#规范,自动处理可空类型,不会生成冗余的
MemberNameSpecified字段,直接用可空值类型标记可选元素。 - 支持把多个XSD的不同XML命名空间映射到同一个C#命名空间,可通过命令行参数或者
svcutil.config配置文件设置映射规则。 - 命令示例:
dotnet svcutil your-schema.xsd /namespace:http://iso20022.org/your-namespace,Your.Target.Namespace
2. XmlSchemaClassGenerator(开源工具)
- 专门做XSD转C#类的工具,配置项丰富,完全支持可空值类型,默认不会生成Specified字段,直接用可空类型处理可选元素。
- 能将多个XSD的不同XML命名空间合并到同一个C#命名空间,不管是用配置文件还是代码参数都能设置映射规则。
- 支持所有.NET平台,既可以通过NuGet包集成到项目中,也能用命令行工具直接生成代码。
付费工具
1. Liquid XML Studio
- 针对企业级复杂Schema优化,对ISO20022这类庞大的Schema集合支持完善。
- 自动处理可空类型,生成的C#代码简洁清爽,没有冗余的Specified字段。
- 提供可视化界面配置命名空间映射,能轻松把多个XSD的不同XML命名空间合并到同一个C#命名空间,避免生成重复类。
- 还附带Schema验证、XML编辑等实用功能,适合大规模ISO20022项目开发。
2. Altova XMLSpy
- 老牌XML开发工具,对ISO20022 Schema支持得很成熟。
- 生成的C#代码支持可空值类型,可自定义生成规则,避开冗余字段。
- 支持批量处理多个XSD,还能灵活配置命名空间映射,把不同XML命名空间的元素合并到同一个C#命名空间。
- 拥有Schema可视化、调试、验证等全套功能,适合专业XML开发场景。
内容的提问来源于stack exchange,提问作者Stephane
相关产品推荐
相关产品推荐

