使用指定的xsi:type属性从XML元素返回正确的数据类型

时间:2013-03-01 18:53:26

标签: c# .net xml xsd

.NET框架是否有内置的API来解析XML Schema的一些原始数据类型并将它们转换为适当的.NET数据类型?例如:

<someElement 
  xmlns:xs="http://www.w3.org/2001/XMLSchema"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:type="xs:dateTime">2013-03-01T18:36:00Z</someElement>

我想编写一些C#代码,这些代码可以关闭xsi:type属性,并为我提供等效的.NET数据类型,理想情况下是.NET中的一些内置API。我刚刚发现XmlConvert类有几个ToXXX()静态方法(比如ToDateTime(),但我希望它能自动选择合适的类型。

重要提示:我强烈希望尽可能避免使用基于XML架构文件自动生成C#类声明的xsd.exe工具。

1 个答案:

答案 0 :(得分:1)

不,没有什么可以在.NET中自动执行您想要的操作。

最接近的是objecte序列化器/反序列化器自动生成的代码 - 在反序列化XML元素时,它实际上可以读取并使用xsi:type生成不同类的对象,但它实际上并不适用于原始类型喜欢日期(并且使用起来非常麻烦 - 您必须声明类并对它们进行反序列化。)