根据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