Obsługiwane typy XML — uwagi dotyczące implementacji
W tym temacie opisano szczegóły implementacji, o których chcesz wiedzieć.
Mapowania listy
Typy IList, , IEnumerableICollectionType[]i String służą do reprezentowania typów list języka definicji schematu XML (XSD).
Mapowania unii
Typy unii są reprezentowane przy użyciu XmlAtomicValue typu lub String . Typ źródła lub typ docelowy musi być zawsze albo StringXmlAtomicValue.
XmlSchemaDatatype Jeśli obiekt reprezentuje typ listy, obiekt konwertuje wartość ciągu wejściowego na listę co najmniej jednego obiektu. XmlSchemaDatatype Jeśli element reprezentuje typ unii, podjęto próbę przeanalizowana wartości wejściowej jako typu składowego unii. Jeśli próba analizy zakończy się niepowodzeniem, próba konwersji zostanie podjęta z następnym elementem członkowskim unii i tak dalej, dopóki konwersja nie powiedzie się lub nie ma innych typów składowych do wypróbowania, w tym przypadku zostanie zgłoszony wyjątek.
Różnice między typami danych CLR i XML
Poniżej opisano pewne niezgodności, które mogą wystąpić między typami CLR i typami danych XML oraz sposobem ich obsługi.
Uwaga
Prefiks xs
jest mapowany na https://www.w3.org/2001/XMLSchema identyfikator URI przestrzeni nazw i .
System.TimeSpan i xs:duration
Typ xs:duration
jest częściowo uporządkowany, ponieważ istnieją pewne wartości czasu trwania, które są różne, ale równoważne. Oznacza to, że wartość xs:duration
typu, taka jak 1 miesiąc (P1M) jest mniejsza niż 32 dni (P32D), większa niż 27 dni (P27D) i równoważna 28, 29 lub 30 dni.
Klasa TimeSpan nie obsługuje tego częściowego porządkowania. Zamiast tego wybiera określoną liczbę dni dla 1 roku i 1 miesiąca; Odpowiednio 365 dni i 30 dni.
Aby uzyskać więcej informacji na xs:duration
temat typu, zobacz W3C XML Schema Part 2: Datatypes Recommendation (Schemat XML W3C — część 2: zalecenie dotyczące typów danych).
xs:time, typy dat gregoriańskich i System.DateTime
xs:time
Gdy wartość jest mapowana na DateTime obiekt, MinValue pole jest używane do inicjowania właściwości DateTime daty obiektu (takich jak Year, Monthi Day) do najmniejszej możliwej DateTime wartości.
Podobnie wystąpienia xs:gMonth
, xs:gDay
, xs:gYear
xs:gYearMonth
i xs:gMonthDay
są również mapowane na DateTime obiekt. Nieużywane właściwości obiektu DateTime są inicjowane do tych z MinValueklasy .
Uwaga
Nie można polegać na DateTime.Year wartości, gdy zawartość jest typowana jako xs:gMonthDay
. Wartość jest zawsze ustawiona DateTime.Year na wartość 1904 w tym przypadku.
xs:anyURI i System.Uri
Gdy wystąpienie xs:anyURI
obiektu reprezentuje względny identyfikator URI jest mapowane na Uriobiekt , Uri obiekt nie ma podstawowego identyfikatora URI.