C# 从xsd生成可序列化的cs类:使用哪种工具?

C# 从xsd生成可序列化的cs类:使用哪种工具?,c#,xmlserializer,C#,Xmlserializer,我需要定义一些实现第三方xsd定义的类。xsd非常复杂,在结束枚举时有很多限制,因此我尝试使用xsd.exe和xsd2代码节省一些时间。但是,生成的类不考虑minoccurs=0属性,最糟糕的是,将一些定义为字符串的类型映射到枚举(int)。例如,以下类型映射为具有相同名称的枚举: <xsd:element name="CodiceFornitura"> <xsd:simpleType> <xsd:restri

我需要定义一些实现第三方xsd定义的类。xsd非常复杂,在结束枚举时有很多限制,因此我尝试使用xsd.exe和xsd2代码节省一些时间。但是,生成的类不考虑minoccurs=0属性,最糟糕的是,将一些定义为字符串的类型映射到枚举(int)。例如,以下类型映射为具有相同名称的枚举:

<xsd:element name="CodiceFornitura">
            <xsd:simpleType>
                <xsd:restriction base="xsd:string">
                    <xsd:enumeration value="IMP00"/>
                </xsd:restriction>
            </xsd:simpleType>
    </xsd:element>

[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]
    [System.SerializableAttribute()]
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
    [System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = false)]
    public enum CodiceFornitura
    {
        /// <remarks/>
        IMP00,
    }

[System.CodeDom.Compiler.GeneratedCodeAttribute(“System.Xml”,“4.0.30319.1”)]
[System.SerializableAttribute()]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
[System.Xml.Serialization.XmlRootAttribute(Namespace=”“,IsNullable=false)]
公共枚举代码
{
/// 
IMP00,
}
另一个问题是某些元素可能会被序列化,也可能不会被序列化:例如,如果我要发送一种类型的文档(比如OriginalInvoiceUpdate),我必须添加一段xml,说明必须替换哪个invoce,否则必须忽略该段xml

xsd2code有两个属性来生成代码:GenerateShouldSerialize和GeneratePropertyNameSpecified。将第一个设置为true没有任何效果,将第二个设置为All会生成所有类成员的属性,而不仅仅是minoccurs=0的类成员

因此,问题是: 1.我是否应该更改生成的源代码以反映我的需要,xsd.exe或XSD2代码中缺少一些配置? 2.什么XmlSerializer将为枚举写入xml:枚举值(“1”)或值的字符串表示形式(IMP00)? 3.还有其他工具可以从xsd构建源代码吗

提前感谢您的帮助

请查看。它有从xsd生成类的选项,并且比xsd.exe更具可配置性

我们使用
当然,您可以将XML模式读入内存,并生成自己的代码。