在运行时从xsd获取类型

时间:2012-06-26 02:50:46

标签: c# xml xsd

我的问题与Is it possible to get the type of an XML node as it was defined in XSD?

半关联

...但这个问题没有得到解答,它以python为目标,而我对C#.Net解决方案很感兴趣。我的问题是:如何获得在XSD中定义的类型,表示为.Net中的类型?

背景: 如果它有帮助,我的目标是使用xpath在XML文档中找到一个部分,在支持的XSD中找到该部分的相应类型,最后使用该类型然后将该部分反序列化为.Net对象。

通常,如果我在编译时知道类型,我可以对xml进行反序列化,但在运行时,必须使用xpath查询推断类型。我认为这可以通过反射实现,但我也想知道.Net Framework中是否存在我可以利用的东西。

换句话说,我想做与此相反的事情:

private void ExtractXsdFromType(Type type, FileInfo xsd)
{
    XmlReflectionImporter importer = new XmlReflectionImporter();
    XmlTypeMapping mapping = importer.ImportTypeMapping(type);
}

...而不是传入一个类型来获取映射,我将传入一个字符串来获取类型。我希望这很清楚,但如果没有请求澄清,我会提供更多细节。

感谢您的体验!

1 个答案:

答案 0 :(得分:0)

  

而不是传入一个类型来获取映射,我会传入一个字符串来获取类型。

给定合格的程序集名称,您可以使用Type检索相应的Type.GetType()对象。例如,Type.GetType("ReflectionTest.TestClass")返回TestClass命名空间中定义的类ReflectionTest的类型。