Partilhar via


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:gYearxs: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.

Consulte também