XML 类型支持实现说明
本主题介绍一些要注意的实现细节。
列表映射
IList、ICollection、IEnumerable、Type[] 和 String 类型用于表示 XML 架构定义语言 (XSD) 列表类型。
联合映射
联合类型使用 XmlAtomicValue 或 String 类型表示。 因此,源类型或目标类型必须始终为 String 或 XmlAtomicValue。
如果 XmlSchemaDatatype 对象表示列表类型,该对象会将输入字符串值转换为一个或多个对象的列表。 如果 XmlSchemaDatatype 表示联合类型,则尝试将输入值作为联合的成员类型进行分析。 如果尝试分析失败,将尝试使用联合的下一个成员进行转换,依此类推,直到转换成功,或没有其他成员类型可以尝试,在这种情况下将引发异常。
CLR 和 XML 数据类型之间的区别
下文介绍 CLR 类型和 XML 数据类型之间可能发生的某些不匹配情况以及如何处理这些情况。
注意
xs
前缀映射到 https://www.w3.org/2001/XMLSchema 和命名空间 URL。
System.TimeSpan 和 xs:duration
xs:duration
类型进行部分排序,因为存在某些不同但是等效的持续时间值。 这意味着对于 xs:duration
类型,1 个月 (P1M) 之类的值少于 32 天 (P32D),多于 27 天 (P27D),等效于 28、29 或 30 天。
TimeSpan 类不支持此部分排序。 而是为 1 年和 1 个月选取特定的天数;分别为 365 天和 30 天。
有关 xs:duration
类型的详细信息,请参阅 W3C XML 架构第 2 部分:数据类型建议。
xs:time、公历数据类型和 System.DateTime
xs:time
值映射到 DateTime 对象时,MinValue 字段用于将 DateTime 对象的日期属性(例如 Year、Month 和 Day)初始化为 DateTime 可能的最小值。
同样,xs:gMonth
、xs:gDay
、xs:gYear
、xs:gYearMonth
和 xs:gMonthDay
的实例也映射到 DateTime 对象。 DateTime 对象上未使用的属性初始化为 MinValue 中的值。
注意
如果内容类型化为 DateTime.Year,则不能使用 xs:gMonthDay
值。 在这种情况下,DateTime.Year 值始终设置为 1904。
xs:anyURI 和 System.Uri
表示相对 URI 的 xs:anyURI
的实例映射到 Uri 时,Uri 对象没有基 URI。