Clase System.Xml.XmlConvert

En este artículo se proporcionan comentarios adicionales a la documentación de referencia de esta API.

La clase XmlConvert es funcionalmente equivalente a la clase Convert, pero admite estándares XML. El sistema de tipos se basa en el tipo de esquema de lenguaje de definición de esquemas XML (XSD) y los valores devueltos siempre son independientes de la configuración regional.

Codificar y descodificar

Los nombres de elemento y atributo o los valores de identificador se limitan a un intervalo de caracteres XML según la recomendación W3C XML 1.0. Cuando los nombres contienen caracteres no válidos, puede usar los métodos EncodeName y DecodeName de esta clase para traducirlos en nombres XML válidos.

Por ejemplo, si desea usar el encabezado de columna "Order Detail" en una base de datos, la base de datos permite el espacio entre las dos palabras. Sin embargo, en XML, el espacio entre "Order" y "Detail" se considera un carácter XML no válido. Tiene que convertirlo en código hexadecimal con escape y descodificarlo más adelante.

Puede usar el método EncodeName con la clase XmlWriter para asegurarse de que los nombres que se escriben son nombres XML válidos. El siguiente código de C# convierte el nombre "Order Detail" en un nombre XML válido y escribe el elemento <Order_0x0020_Detail>My order</Order_0x0020_Detail>.

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

Los métodos siguientes XmlConvert realizan la codificación y la descodificación.

Method Descripción
EncodeName Toma un nombre y devuelve el nombre codificado junto con los caracteres no válidos que se reemplacen por una cadena de escape. Este método permite que haya signos de dos puntos en cualquier posición, lo que significa que el nombre puede continuar sin ser válido de acuerdo con la recomendación del W3C acerca de los espacios de nombres en XML 1.0.
EncodeNmToken Toma un nombre y devuelve el nombre codificado.
EncodeLocalName Igual que EncodeName, excepto en que también codifica el carácter de signo de dos puntos, lo que garantiza que el nombre se pueda utilizar como la parte LocalName de un nombre completo de espacio de nombres.
DecodeName Invierte la transformación para todos los métodos de codificación.

Validación de nombre

La clase XmlConvert contiene dos métodos que comprueban los caracteres de un nombre de elemento o atributo y comprueban que el nombre se ajusta a las reglas establecidas por la recomendación W3C XML 1.0:

  • VerifyName comprueba los caracteres y que el nombre sea válido. El método devuelve el nombre si es válido y produce una excepción si no lo es.
  • VerifyNCName realiza la misma validación, pero acepta nombres no calificados.

XmlConvert contiene métodos adicionales que validan tokens, caracteres de espacio en blanco, identificadores públicos y otras cadenas.

Conversión de tipos de datos

XmlConvert también proporciona métodos que permiten convertir datos de una cadena a un tipo de datos fuertemente tipado. Por ejemplo, el método ToDateTime convierte una cadena en su DateTime equivalente. Esto resulta útil porque la mayor parte de los métodos de la clase XmlReader devuelven los datos como una cadena. Una vez leídos los datos, se pueden convertir en el tipo de datos correcto antes de utilizarlos. Las sobrecargas ToString proporcionan la operación complementaria convirtiendo datos fuertemente tipados en cadenas. Por ejemplo, esto resulta útil cuando desea agregar los datos a los cuadros de texto de una página web. La configuración regional no se tiene en cuenta durante la conversión de datos. Los tipos de datos se basan en los tipos de datos de esquema XML (XSD).