![](/img/trans.png)
[英]Programmatically use XSD.exe tool feature (generate class from XSD Schema) through .NET Framework classes?
[英]Programmatically use XSD.exe tool feature (generate schema from class) through .NET Framework classes?
我想基于类生成XML架构,就像使用Xsd.exe工具一样 。
例如xsd.exe /type: typename /outputdir:c:\\ assmeblyname
。
有没有一种方法可以通过使用.NET Framework中的类而不是使用独立工具来做到这一点?
我确定我已经看过有关任务引用或类似内容(即某些程序性信息)的信息,这些信息可以代替某些独立的实用程序使用,或者某些独立的实用程序通过FCL或Microsoft API获得其功能。
找到了看起来应该可以解决的问题...
public static string GetSchema<T>()
{
XmlAttributeOverrides xao = new XmlAttributeOverrides();
AttachXmlAttributes(xao, typeof(T));
XmlReflectionImporter importer = new XmlReflectionImporter(xao);
XmlSchemas schemas = new XmlSchemas();
XmlSchemaExporter exporter = new XmlSchemaExporter(schemas);
XmlTypeMapping map = importer.ImportTypeMapping(typeof(T));
exporter.ExportTypeMapping(map);
using (MemoryStream ms = new MemoryStream())
{
schemas[0].Write(ms);
ms.Position = 0;
return new StreamReader(ms).ReadToEnd();
}
}
做这个:
public string GetFullSchema() {
string @namespace = "yourNamespace";
var q = from t in Assembly.GetExecutingAssembly().GetTypes()
where t.IsClass && t.Namespace == @namespace
select t;
XmlReflectionImporter importer = new XmlReflectionImporter(@namespace);
XmlSchemas schemas = new XmlSchemas();
XmlSchemaExporter exporter = new XmlSchemaExporter(schemas);
foreach (var x in q)
{
var map = importer.ImportTypeMapping(x);
exporter.ExportTypeMapping(map);
}
using (MemoryStream ms = new MemoryStream())
{
schemas[0].Write(ms);
ms.Position = 0;
return new StreamReader(ms).ReadToEnd();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.