Note sull'implementazione del supporto per il tipo XML
In questo argomento vengono descritti alcuni dettagli sull'implementazione di cui è consigliabile essere a conoscenza.
Mapping degli elenchi
I tipi IList, ICollection, IEnumerable, Type[] e String vengono utilizzati per rappresentare i tipi di elenco XSD (XML Schema definition language).
Mapping delle unioni
I tipi di unione vengono rappresentati utilizzando il tipo XmlAtomicValue o String. Pertanto, il tipo di origine o il tipo di destinazione devono sempre essere String o XmlAtomicValue.
Se l'oggetto XmlSchemaDatatype rappresenta un tipo di elenco, tale oggetto converte il valore della stringa di input in un elenco di uno o più oggetti. Se l'oggetto XmlSchemaDatatype rappresenta un tipo di unione, viene eseguito un tentativo di analisi del valore di input come tipo membro dell'unione. Se il tentativo di analisi non viene eseguito correttamente, viene tentata la conversione con il successivo membro dell'unione e così via fino a quando la conversione non viene eseguita correttamente o non sono disponibili altri tipi di membro con cui provare. In questo caso verrà generata un'eccezione.
Differenze tra i tipi di dati CLR e XML
Di seguito vengono descritte alcune corrispondenze errate che si possono verificare tra i tipi di dati CLR e i tipi di dati XML e la loro eventuale gestione.
Nota |
---|
Il prefisso xs è associato all'indirizzo http://www.w3.org/2001/XMLSchema e all'URI dello spazio dei nomi. |
System.TimeSpan e xs:duration
Il tipo xs:duration è parzialmente ordinato, poiché alcuni valori di durata sono diversi ma equivalenti. Ciò significa che per il tipo xs:duration il valore di 1 mese (P1M) è minore di 32 giorni (P32D), maggiore di 27 giorni (P27D) ed equivalente a 28, 29 o 30 giorni.
La classe TimeSpan non supporta questo ordinamento parziale. Invece, stabilisce un numero specifico di giorni per 1 anno e 1 mese: rispettivamente 365 e 30 giorni.
Per ulteriori informazioni sul tipo xs:duration, vedere la raccomandazione W3C XML Schema Part 2: Datatypes all'indirizzo http://www.w3.org/TR/xmlschema-2/ (informazioni in lingua inglese).
xs:time, tipi di date gregoriane e System.DateTime
Quando un valore xs:time è associato a un oggetto DateTime, il campo MinValue viene utilizzato per inizializzare le proprietà relative alla data dell'oggetto DateTime (ad esempio, Year, Month e Day) impostandole sul valore DateTime più basso possibile.
Allo stesso modo, anche istanze di xs:gMonth, xs:gDay, xs:gYear, xs:gYearMonth e xs:gMonthDay vengono associate a un oggetto DateTime. Le proprietà inutilizzate nell'oggetto DateTime vengono inizializzate impostandole su quelle da MinValue.
Nota |
---|
Non è possibile utilizzare il valore DateTime.Year quando il contenuto è tipizzato come xs:gMonthDay.In questo caso il valore DateTime.Year è sempre impostato su 1904. |
xs:anyURI e System.Uri
Quando un'istanza di xs:anyURI che rappresenta un URI relativo viene associata a un tipo Uri, l'oggetto Uri non dispone di un URI di base.