Classe System.Xml.XmlConvert

Este artigo fornece observações complementares à documentação de referência para essa API.

A classe XmlConvert é funcionalmente equivalente à classe Convert, mas oferece suporte a padrões XML. O sistema de tipos é baseado no tipo do idioma da definição de esquema XML (XSD), e os valores retornados são sempre são independentes.

Codificação e decodificação

Os nomes de elementos e atributos ou valores de ID são limitados a um intervalo de caracteres XML de acordo com a recomendação XML 1.0 do W3C. Quando os nomes contêm caracteres inválidos, você pode usar os métodos EncodeName e DecodeName nessa classe para convertê-los em nomes XML válidos.

Por exemplo, se você quiser usar o título da coluna "Detalhes do Pedido" em um banco de dados, o banco de dados permitirá o espaço entre as duas palavras. No entanto, em XML, o espaço entre "Detalhes" e "Pedido" é considerado um caractere XML inválido. Você deve convertê-lo em uma codificação hexadecimal escapada e decodificá-lo posteriormente.

Você pode usar o método EncodeName com a classe XmlWriter para garantir que os nomes que estão sendo gravados sejam nomes XML válidos. O código C# a seguir converte o nome "Detalhes do Pedido" em um nome XML válido e grava o elemento <Order_0x0020_Detail>My order</Order_0x0020_Detail>.

writer.WriteElementString(XmlConvert.EncodeName("Order Detail"),"My order");

Os métodos XmlConvert a seguir executam codificação e decodificação.

Método Descrição
EncodeName Usa um nome e retorna o nome codificado junto com qualquer caractere inválido que seja substituído por uma cadeia de caracteres de escape. Este método permite dois-pontos em qualquer posição, o que significa que o nome ainda pode ser inválido de acordo com os Namespaces W3C na recomendação XML 1.0.
EncodeNmToken Usa um nome e retorna o nome codificado.
EncodeLocalName Equivalente a EncodeName, exceto pelo fato de que ele também codifica o caractere dois-pontos, garantindo que o nome possa ser usado como a parte LocalName de um nome qualificado do namespace.
DecodeName Inverte a transformação para todos os métodos de codificação.

Validação de Nome

A classe XmlConvert contém dois métodos que verificam os caracteres em um nome de elemento ou atributo e verificam se o nome está em conformidade com as regras definidas pela recomendação XML 1.0 do W3C:

  • VerifyName verifica os caracteres e se o nome é válido. O método retorna o nome se for válido e gera uma exceção se não for.
  • VerifyNCName executa a mesma validação, mas aceita nomes não qualificados.

XmlConvert contém métodos adicionais que validam tokens, caracteres de espaço em branco, IDs públicos e outras cadeias de caracteres.

Conversão de tipo de dados

XmlConvert também fornece métodos que permitem converter dados de uma cadeia de caracteres em um tipo de dados fortemente tipado. Por exemplo, o método ToDateTime converte uma cadeia de caracteres em seu DateTime equivalente. Isso é útil porque a maioria dos métodos na classe de XmlReader retornam dados como uma cadeia de caracteres. Uma vez que os dados são lidos, eles podem ser convertidos para o tipo de dado apropriado antes de ser usada. As sobrecargas ToString fornecem a operação complementar convertendo dados fortemente tipados em cadeias de caracteres. Por exemplo, isso é útil quando você deseja adicionar os dados a caixas de texto em uma página da Web. As configurações de localidade não são levadas em consideração durante a conversão de dados. Os tipos de dados são baseados nos tipos de dados do esquema XML (XSD).