XML 类型支持实现说明

本主题介绍一些要注意的实现细节。

列表映射

IListICollectionIEnumerable、Type[] 和 String 类型用于表示 XML 架构定义语言 (XSD) 列表类型。

联合映射

联合类型使用 XmlAtomicValueString 类型表示。 因此,源类型或目标类型必须始终为 StringXmlAtomicValue

如果 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 对象的日期属性(例如 YearMonthDay)初始化为 DateTime 可能的最小值。

同样,xs:gMonthxs:gDayxs:gYearxs:gYearMonthxs:gMonthDay 的实例也映射到 DateTime 对象。 DateTime 对象上未使用的属性初始化为 MinValue 中的值。

注意

如果内容类型化为 DateTime.Year,则不能使用 xs:gMonthDay 值。 在这种情况下,DateTime.Year 值始终设置为 1904。

xs:anyURI 和 System.Uri

表示相对 URI 的 xs:anyURI 的实例映射到 Uri 时,Uri 对象没有基 URI。

请参阅