首页 > 代码库 > 根据xsd生成C#类

根据xsd生成C#类

var file = "1.xsd";                // Get the namespace for the schema.            CodeNamespace ns = Processor.Process(file, "Dm");            // Create the appropriate generator for the language.            CodeDomProvider provider;            if ("cs" == "cs")                provider = new Microsoft.CSharp.CSharpCodeProvider();            else if (args[3] == "vb")                provider = new Microsoft.VisualBasic.VBCodeProvider();            else                throw new ArgumentException("Invalid language", args[3]);            // Write the code to the output file.            using (StreamWriter sw = new StreamWriter(file, false))            {                provider.CreateGenerator().GenerateCodeFromNamespace(                  ns, sw, new CodeGeneratorOptions());            }            Console.WriteLine("Finished");            Console.Read();

 

Process

public sealed class Processor        {            public static CodeNamespace Process(string xsdFile,               string targetNamespace)            {                // Load the XmlSchema and its collection.                 XmlSchema xsd;                using (FileStream fs = new FileStream(xsdFile, FileMode.Open))                {                    xsd = XmlSchema.Read(fs, null);                    xsd.Compile(null);                }                XmlSchemas schemas = new XmlSchemas();                schemas.Add(xsd);                // Create the importer for these schemas.                 XmlSchemaImporter importer = new XmlSchemaImporter(schemas);                // System.CodeDom namespace for the XmlCodeExporter to put classes in.                 CodeNamespace ns = new CodeNamespace(targetNamespace);                XmlCodeExporter exporter = new XmlCodeExporter(ns);                // Iterate schema top-level elements and export code for each.                 foreach (XmlSchemaElement element in xsd.Elements.Values)                {                    // Import the mapping first.                     XmlTypeMapping mapping = importer.ImportTypeMapping(                      element.QualifiedName);                    // Export the code finally.                     exporter.ExportTypeMapping(mapping);                }                return ns;            }        } 

Client

 

根据xsd生成C#类