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 和命名空間 URI。
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。