Implementierungshinweise zur XML-Typunterstützung
In diesem Thema werden einige Implementierungsdetails beschrieben, die Sie beachten müssen.
Listenzuordnungen
Die Typen IList, ICollection, IEnumerable, Type[] und String werden zur Darstellung von XSD-Listentypen (XML Schema Definition Language) verwendet.
Union-Zuordnungen
Union-Typen werden durch den XmlAtomicValue-Typ oder den String-Typ dargestellt. Der Ausgangs- oder Zieltyp muss daher immer String oder XmlAtomicValue sein.
Wenn das XmlSchemaDatatype-Objekt einen Listentyp darstellt, konvertiert das Objekt den Wert der Eingabezeichenfolge in eine Liste aus einem oder mehreren Objekten. Wenn das XmlSchemaDatatype-Objekt einen Union-Typ darstellt, wird versucht, den Eingabewert als einen Membertyp der Union zu interpretieren. Wenn ein Versuch fehlschlägt, wird der Konvertierungsversuch mit dem nächsten Member der Union wiederholt. Dies wird wiederholt bis die Konvertierung erfolgreich ist oder bis die Konvertierung für alle Membertypen erfolglos war. In diesem Fall wird eine Ausnahme ausgelöst.
Unterschiede zwischen CLR-Datentypen und XML-Datentypen
Es folgt eine Beschreibung möglicher Konflikte zwischen CLR-Datentypen und XML-Datentypen und ihrer Behandlung.
Hinweis
Das xs
-Präfix wird https://www.w3.org/2001/XMLSchema und dem Namespace-URI zugeordnet.
"System.TimeSpan" und "xs:duration"
Der xs:duration
-Typ ist insofern partiell geordnet, als dass es Intervalle gibt, die verschieden, aber äquivalent sind. Dies bedeutet, dass für Werte von Typ xs:duration
gilt, dass ein Monat (P1M) kleiner als 32 Tage (P32D), größer als 27 Tage (P27D) und äquivalent zu 28, 29 oder 30 Tagen ist.
Die TimeSpan-Klasse unterstützt diese partielle Ordnung nicht. Für ein Jahr und einen Monat wird eine bestimmte Anzahl von Tagen (365 bzw. 30) festgelegt.
Weitere Informationen über den xs:duration
-Typ finden Sie in der W3C-Spezifikation XML-Schema Teil 2: Empfehlungen zu Datentypen.
"xs:time", Typen für das gregorianische Datum und "System.DateTime"
Wenn einem xs:time
-Wert ein DateTime-Objekt zugeordnet wird, wird das MinValue-Feld zur Initialisierung der Datumseigenschaften des DateTime-Objekts (z. B. Year, Month oder Day) mit dem kleinsten möglichen DateTime-Wert verwendet.
In gleicher Weise wird den Instanzen von xs:gMonth
, xs:gDay
, xs:gYear
, xs:gYearMonth
und xs:gMonthDay
ein DateTime-Objekt zugeordnet. Nicht verwendete Eigenschaften des DateTime-Objekts werden mit den Werten von MinValue initialisiert.
Hinweis
Wenn der Inhalt den Typ DateTime.Year hat, ist der xs:gMonthDay
-Wert nicht verlässlich. Der DateTime.Year-Wert wird in diesem Fall immer auf 1904 festgelegt.
"xs:anyURI" und "System.Uri"
Wenn einer Instanz von xs:anyURI
, die einen relativen URI darstellt, ein Uri zugeordnet wird, hat das Uri-Objekt keinen Basis-URI.