Compartilhar via


Notas de implementação de suporte do tipo XML

Este tópico descreve alguns detalhes de implementação de que você deseja estar ciente.

Mapeamentos de lista

Os tipos IList, ICollection, IEnumerable, Type[] e String são usados para representar tipos de lista de XSD (linguagem de definição de esquema XML).

Mapeamentos de união

Os tipos de união são representados usando o tipo de XmlAtomicValue ou de String . O tipo de origem ou o tipo de destino portanto deve ser sempre String ou XmlAtomicValue.

Se o objeto de XmlSchemaDatatype representa um tipo de lista o objeto converte o valor da cadeia de caracteres de entrada em uma lista de um ou mais objetos. Se XmlSchemaDatatype representa um tipo de união então é feita uma tentativa de analisar o valor de entrada como um tipo de membro de união. Se a tentativa de análise falhar na conversão será tentada com o membro a seguir de união e assim por diante até que a conversão foi bem-sucedida, ou não há nenhum outro tipo do membro a tentar nesse caso, uma exceção é lançada.

Diferenças entre tipos de dados de CLR e XML

O exemplo a seguir descreve determinadas incompatíveis que podem ocorrer entre tipos de CLR e tipos de dados XML e como elas são tratadas.

Observação

O prefixo xs é mapeado para o https://www.w3.org/2001/XMLSchema e o URI de namespace.

System.TimeSpan e xs:duration

O tipo de xs:duration é ordenada parcialmente em que há determinados valores de duração que são diferentes mas equivalente. Isso significa que para o valor do tipo de xs:duration como 1 mês (P1M) está menos de 32 dias (P32D), maior que 27 dias (P27D) e equivalente a 28, 29 ou 30 dias.

A classe de TimeSpan não suporta este pedido parcial. Em vez disso, escolher um número específico de dias para 1 e 1 ano mês; 365 dias e 30 dias respectivamente.

Para obter mais informações sobre o tipo xs:duration, confira a Parte 2 do Esquema XML do W3C: recomendação de tipos de dados.

xs:time, tipos gregorianos de data, e System.DateTime

Quando um valor de xs:time é mapeado para um objeto de DateTime , o campo de MinValue é usado para inicializar propriedades de data do objeto de DateTime (como Year, Month, e Day) para o valor possível com o menor de DateTime .

Da mesma forma, as instâncias de xs:gMonth, xs:gDay, xs:gYear, xs:gYearMonth e xs:gMonthDay também são mapeados para um objeto de DateTime . As propriedades não usado no objeto de DateTime são inicializadas àquelas de MinValue.

Observação

Você não pode depender no valor de DateTime.Year quando o conteúdo está digitado como xs:gMonthDay. O valor de DateTime.Year é sempre definido como 1904 nesse caso.

xs:anyURI e System.Uri

Quando uma instância de xs:anyURI que representa o URL relativa é mapeada a Uri, o objeto de Uri não tem URI base.

Confira também