Escribir datos de tipo

Actualización: November 2007

La clase XmlWriter ofrece la posibilidad de escribir datos de tipo. El método WriteValue acepta valores de tipo simple de Common Language Runtime (CLR). Esta capacidad es útil a la hora de trabajar con tipos simples de CLR y una instancia de XmlWriter. Puede llamar al método WriteValue para escribir el valor de tipo, en lugar de utilizar los métodos en la clase XmlConvert para convertir los datos de tipo en un valor de cadena antes de escribirlos.

Escribir valores de tipo

El método WriteValue toma un objeto CLR y convierte el calor de entrada en el tipo de salida deseado utilizando las normas de conversión de tipos de datos del lenguaje de definición de esquemas XML (XSD). Si el objeto CLR es un tipo de lista, como IEnumerable, IList o ICollection, se trata como una matriz del tipo de valor.

Cuando se llama al método WriteValue, XmlWriter convierte el valor en sus representaciones de cadena de acuerdo con las normas de tipos de datos del esquema XML (XSD) y lo escribe utilizando el método WriteString.

Escribir en texto

Cuando se llama a WriteValue, el valor de tipo se serializa en texto utilizando las normas de XmlConvert para ese tipo de esquema.

Tipo CLR

Tipo de datos del esquema XML (XSD) predeterminado

System.Boolean

xsd:boolean

System.Byte**

xsd:integer

System.Byte[]

xsd:base64Binary

System.Char**

xsd:string

System.DateTime

xsd:dateTime

System.Decimal

xsd:decimal

System.Double

xsd:double

System.Int16**

xsd:integer

System.Int32

xsd:integer

System.Int64

xsd:integer

System.Single

xsd:float

System.String

xsd:string

System.IO.TextReader

xsd:string

System.IO.BinaryReader

xsd:base64Binary

**Estos tipos no son compatibles con CLS. No tienen un método correspondiente en la clase XmlReader.

Nota:

Si se llama a WriteValue varias veces seguidas, los valores no se delimitan por un espacio.Debe llamar a WriteWhitespace entre las llamadas a WriteValue para insertar espacios en blanco.

Escribir en un almacén de datos XML

XmlWriter se puede utilizar para escribir en un almacén de datos XML. Por ejemplo, la clase XPathNavigator puede crear un objeto XmlWriter para crear nodos para un objeto XmlDocument.

Si el almacén de datos tiene disponible información de esquema, el método WriteValue inicia una excepción si la llamada a WriteValue intenta realizar la conversión a un tipo que no está permitido.

Si el almacén de datos no dispone de información de esquema, el método WriteValue trata todos los valores como un tipo xsd:anySimpleType.

Ejemplo

En el siguiente ejemplo se sube un 15 por ciento el precio del libro antes de escribirlo. La información de esquema se obtiene del lector, que es un objeto XmlReader de validación.

reader.ReadToDescendant("price")
writer.WriteStartElement("price")
writer.WriteValue(reader.ReadElementContentAsDouble() * 1.15)
writer.WriteEndElement()
reader.ReadToDescendant("price");
writer.WriteStartElement("price");
writer.WriteValue((reader.ReadElementContentAsDouble())*1.15);
writer.WriteEndElement();

Vea también

Otros recursos

Escribir XML con XmlWriter

Compatibilidad de tipos en las clases System.Xml