通过.NET Framework类以编程方式使用XSD.exe工具功能(从类生成架构)?
我想根据类生成一个XML模式,正如您所能做的那样 用这个 例如,通过.NET Framework类以编程方式使用XSD.exe工具功能(从类生成架构)?,.net,xsd.exe,fcl,.net,Xsd.exe,Fcl,我想根据类生成一个XML模式,正如您所能做的那样 用这个 例如,xsd.exe/type:typename/outputdir:c:\assmeblyname 有没有办法通过使用.NET Framework中的类而不是使用独立工具来做到这一点 我确信我已经看到了关于任务引用或类似的信息,即一些编程的信息,可以用来代替一些独立的实用程序,或者一些独立的实用程序通过FCL或Microsoft API获得其功能 找到了这个,看起来它应该会起作用 public static string GetSche
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();
}
}
公共静态字符串GetSchema()
{
XmlAttributeOverrides xao=新的XmlAttributeOverrides();
AttachXmlAttributes(xao,typeof(T));
XmlReflectionImporter导入器=新的XmlReflectionImporter(xao);
XmlSchemas=新的XmlSchemas();
XmlSchemaExporter exporter=新的XmlSchemaExporter(模式);
XmlTypeMapping map=importer.ImportTypeMapping(typeof(T));
exporter.ExportTypeMapping(地图);
使用(MemoryStream ms=new MemoryStream())
{
架构[0]。写入(毫秒);
ms.Position=0;
返回新的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();
}
}
我不知道(作为一个带有
GenerateXsd()
方法的一次性类)。但是,您可以使用System.Reflection和System.Xml.Hmmmmm中的大量类来重新创建它。。。谢谢杰西克。有人知道互联网上有这种预先包装好的肘部润滑脂吗?不是你要找的,但是你可以把它包起来。如果它是一个.NET工具,您也可以引用exe,并选择代码。Google显示如下:。可能有帮助吗?完整代码位于: