【发布时间】:2011-05-09 13:46:11
【问题描述】:
标题几乎说明了一切。 VS xsd.exe 以驼峰形式创建类。有没有办法在帕斯卡案例中生成类?
如果没有,是否有人知道将大量类名从骆驼大小写转换为帕斯卡大小写的好工具。
谢谢
编辑:
xsd.exe 不会在驼峰式中生成类名作为标准 - 它只是遵循架构的约定 - 但是,我有兴趣覆盖此行为,因此 XmlElement 名称属性仍将遵循架构定义的约定, 但类名是帕斯卡大小写。
【问题讨论】:
标题几乎说明了一切。 VS xsd.exe 以驼峰形式创建类。有没有办法在帕斯卡案例中生成类?
如果没有,是否有人知道将大量类名从骆驼大小写转换为帕斯卡大小写的好工具。
谢谢
编辑:
xsd.exe 不会在驼峰式中生成类名作为标准 - 它只是遵循架构的约定 - 但是,我有兴趣覆盖此行为,因此 XmlElement 名称属性仍将遵循架构定义的约定, 但类名是帕斯卡大小写。
【问题讨论】:
我不知道 xsd.exe 是这样做的,您确定架构中的类型也没有在 camelCase 中定义吗?
我的建议是使用xsd2code,它在各方面都远优于xsd.exe..
【讨论】:
查看XmlSchemaClassGenerator,这是一个开源控制台应用程序,其中包括 PascalCasing。 (我是在 xsd2code 15 天试用期到期后发现的。)
- 显式地或通过(可配置的)函数将 XML 命名空间映射到 C# 命名空间
- 从模式注释生成 C# XML cmets
- 生成DataAnnotations 来自架构限制的属性
- 使用
Collection<T>属性(在构造函数中初始化并使用私有设置器)- 对 xs:integer 和派生类型使用 int、long、decimal 或 string
- 自动属性
- 类和属性的 Pascal 案例
- 为没有默认值的可选元素和属性生成可为空的适配器属性(见下文)
- 对 PCL 的可选支持
- 可选支持
INotifyPropertyChanged
就我而言,在让控制台应用程序运行之前,我必须修改 xsd 文档以包含 targetNamespace 字段,如下所示:
原文:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1">
修改:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="gateway" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1">
我的最终用法是这样的:
XmlSchemaClassGenerator.Console -n "http://www.w3.org/2001/XMLSchema=gateway" -o "C:\{output-folder}" {xsd-file-name}.xsd
【讨论】: