Notas de implementação do suporte ao tipo XML
Este tópico descreve alguns detalhes de implementação que você deseja conhecer.
Mapeamentos de lista
Os IListtipos , , ICollectionIEnumerable, Type[] e String são usados para representar tipos de lista XSD (XML Schema Definition Language).
Mapeamentos Sindicais
Os tipos de união são representados usando o XmlAtomicValue tipo ou String . O tipo de origem ou o tipo de destino deve, portanto, ser sempre ou StringXmlAtomicValue.
Se o XmlSchemaDatatype objeto representar um tipo de lista, o objeto converte o valor da cadeia de caracteres de entrada em uma lista de um ou mais objetos. Se o XmlSchemaDatatype representa um tipo de união, então é feita uma tentativa de analisar o valor de entrada como um tipo de membro da união. Se a tentativa de análise falhar, a conversão é tentada com o próximo membro da união e assim por diante até que a conversão seja bem-sucedida, ou não haja outros tipos de membros para tentar, caso em que uma exceção é lançada.
Diferenças entre tipos de dados CLR e XML
A seguir descrevemos certas incompatibilidades que podem ocorrer entre tipos CLR e tipos de dados XML e como eles são tratados.
Nota
O xs
prefixo é mapeado para o URI do https://www.w3.org/2001/XMLSchema namespace e .
System.TimeSpan e xs:duração
O xs:duration
tipo é parcialmente ordenado na medida em que existem certos valores de duração que são diferentes, mas equivalentes. Isto significa que para o xs:duration
tipo o valor como 1 mês (P1M) é inferior a 32 dias (P32D), maior que 27 dias (P27D) e equivalente a 28, 29 ou 30 dias.
A TimeSpan classe não suporta esse pedido parcial. Em vez disso, ele escolhe um número específico de dias para 1 ano e 1 mês; 365 dias e 30 dias, respetivamente.
Para obter mais informações sobre o xs:duration
tipo, consulte o W3C XML Schema Part 2: Datatypes Recommendation.
xs:time, tipos de data gregorianos e System.DateTime
Quando um xs:time
valor é mapeado para um DateTime objeto, o MinValue campo é usado para inicializar as propriedades de data do DateTime objeto (como Year, Monthe Day) para o menor valor possível DateTime .
Da mesma forma, instâncias de xs:gMonth
, xs:gDay
, xs:gYear
xs:gYearMonth
, e xs:gMonthDay
também são mapeadas para um DateTime objeto. As propriedades não utilizadas no DateTime objeto são inicializadas para as de MinValue.
Nota
Não é possível confiar no DateTime.Year valor quando o conteúdo é digitado como xs:gMonthDay
. Neste caso, DateTime.Year o valor é sempre definido como 1904.
xs:anyURI e System.Uri
Quando uma instância que representa um URI relativo é mapeada xs:anyURI
para um Uri, o Uri objeto não tem um URI de base.