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();