1

是否可以使用 XSD.exe 通过在 XSD 上的元素之前提供注释属性来自动生成一个类,该类的属性数据类型与 XSD 中指定的数据类型不同。

这个想法是,保持 XSD 保持原样,但希望自动生成的类对特定属性具有不同的数据类型。

<xsd:simpleType name="idRestriction">
<Specify_Custom_Type="xsd:string" //This is what I'm looking for
<xsd:restriction base="xsd:decimal">

<xsd:attribute name="idAttribute" type="idRestriction" use="required" />

生成的类

[System.Xml.Serialization.XmlAttributeAttribute()]
public decimal id { // Would like the decimal to be string
get {
            return this.idField;
        }
        set {
            this.idField = value;
        }
    }

我希望它产生什么

[System.Xml.Serialization.XmlAttributeAttribute()]
public string id { // Notice decimal --> string
get {
            return this.idField;
        }
        set {
            this.idField = value;
        }
    }
4

1 回答 1

1

假设您有schema.xsd文件

如果您复制相同的文件schema2.xsd并将所有其他原始类型替换为字符串,则可以使用此文件生成.cs

如果您通过编写批处理文件来自动化此过程,我认为您的问题可以解决。

以下链接包含有关如何替换文本文件内容的问题。请检查那个

如何使用 Windows 命令行环境查找和替换文件中的文本?

我想提一点,当您从这些文件生成 .cs 文件时,类名将是相同的。所以最好为这两个类使用不同的命名空间,这样生成的类类型就不会冲突。

您可以使用/n参数 for来提及命名空间xsd.exe

请检查以下链接以获取xsd.exe命令行参数

http://msdn.microsoft.com/en-us/library/x6c1kb0s(v=vs.110).aspx

于 2012-10-19T14:03:01.220 回答