XmlTextWriter Clase

Definición

Representa un sistema de escritura que proporciona un medio rápido, sin almacenamiento en caché y con desplazamiento sólo hacia delante para generar secuencias o archivos con datos XML que satisface las recomendaciones relativas a espacios de nombres en XML y Extensible Markup Language (XML) 1.0 del Consorcio W3C.

A partir de .NET Framework 2.0, se recomienda usar la clase XmlWriter en su lugar.

public ref class XmlTextWriter : System::Xml::XmlWriter
public class XmlTextWriter : System.Xml.XmlWriter
type XmlTextWriter = class
    inherit XmlWriter
Public Class XmlTextWriter
Inherits XmlWriter
Herencia
XmlTextWriter

Comentarios

Esta clase implementa la XmlWriter clase .

Nota

A partir de la .NET Framework 2.0, se recomienda crear XmlWriter instancias mediante el XmlWriter.Create método y la XmlWriterSettings clase para aprovechar las nuevas funcionalidades.

XmlTextWriter mantiene una pila de espacios de nombres correspondiente a todos los espacios de nombres definidos en la pila de elementos actual. Con XmlTextWriter puede declarar espacios de nombres manualmente.

w.WriteStartElement("root");  
w.WriteAttributeString("xmlns", "x", null, "urn:1");  
w.WriteStartElement("item","urn:1");  
w.WriteEndElement();  
w.WriteStartElement("item","urn:1");  
w.WriteEndElement();  
w.WriteEndElement();  

El código de C# anterior genera la siguiente salida. XmlTextWriter promueve la declaración de espacio de nombres al elemento raíz para evitar que se duplique en los dos elementos secundarios. Los elementos secundarios recogen el prefijo de la declaración de espacio de nombres.

<root xmlns:x="urn:1">  
 <x:item/>  
 <x:item/>  
</x:root>  

XmlTextWriter también permite invalidar la declaración del espacio de nombres actual. En el ejemplo siguiente, el URI de espacio de nombres "123" se reemplaza por "abc" para generar el elemento <x:node xmlns:x="abc"/>XML .

w.WriteStartElement("x","node","123");  
w.WriteAttributeString("xmlns","x",null,"abc");  

Mediante el uso de los métodos de escritura que toman un prefijo como argumento, también puede especificar qué prefijo usar. En el ejemplo siguiente, se asignan dos prefijos diferentes al mismo URI de espacio de nombres para generar el texto <x:root xmlns:x="urn:1"><y:item xmlns:y="urn:1"/></x:root>XML .

XmlTextWriter w = new XmlTextWriter(Console.Out);  
w.WriteStartElement("x","root","urn:1");  
 w.WriteStartElement("y","item","urn:1");  
 w.WriteEndElement();  
w.WriteEndElement();  
w.Close();  

Si hay varias declaraciones de espacio de nombres que asignan prefijos diferentes al mismo URI de espacio de nombres, XmlTextWriter recorre la pila de declaraciones de espacio de nombres hacia atrás y elige la más cercana.

XmlTextWriter w = new XmlTextWriter(Console.Out);  
w.Formatting = Formatting.Indented;  
w.WriteStartElement("x","root","urn:1");  
w.WriteStartElement("y","item","urn:1");  
w.WriteAttributeString("attr","urn:1","123");  
w.WriteEndElement();  
w.WriteEndElement();  
w.Close();  

En el ejemplo de C# anterior, dado que la WriteAttributeString llamada no especifica un prefijo, el escritor usa el último prefijo insertado en la pila del espacio de nombres y genera el siguiente XML:

<x:root xmlns:x="urn:1">  
 <y:item y:attr="123" xmlns:y="urn:1" />  
</x:root>  

Si se producen conflictos de espacio de nombres, XmlTextWriter los resuelve generando prefijos alternativos. Por ejemplo, si un atributo y un elemento tienen el mismo prefijo pero espacios de nombres diferentes, XmlWriter genera un prefijo alternativo para el atributo . Los prefijos generados se denominan n{i} donde i es un número que comienza en 1. El número se restablece a 1 para cada elemento.

Los atributos asociados a un URI de espacio de nombres deben tener un prefijo (los espacios de nombres predeterminados no se aplican a los atributos). Esto se ajusta a la sección 5.2 de los espacios de nombres W3C en la recomendación XML. Si un atributo hace referencia a un URI de espacio de nombres, pero no especifica un prefijo, el escritor genera un prefijo para el atributo.

Al escribir un elemento vacío, se agrega un espacio adicional entre el nombre de etiqueta y la etiqueta de cierre, por ejemplo <item />. Esto proporciona compatibilidad con exploradores anteriores.

Cuando se usa como String parámetro null de método y String.Empty son equivalentes. String.Empty sigue las reglas W3C.

Para escribir datos fuertemente tipados, use la XmlConvert clase para convertir tipos de datos en cadena. Por ejemplo, el código de C# siguiente convierte los datos de Double en String y escribe el elemento <price>19.95</price>.

Double price = 19.95;  
writer.WriteElementString("price", XmlConvert.ToString(price));  

XmlTextWriter no comprueba lo siguiente:

  • Caracteres no válidos en los nombres de atributo y elemento.

  • Caracteres Unicode que no se ajustan a la codificación especificada. Si los caracteres Unicode no se ajustan a la codificación especificada, no XmlTextWriter aplica escape a los caracteres Unicode en entidades de caracteres.

  • Atributos duplicados.

  • Caracteres en el identificador público o el identificador del sistema DOCTYPE.

Consideraciones sobre la seguridad

Los siguientes elementos son aspectos que se deben tener en cuenta al trabajar con la XmlTextWriter clase .

  • Las excepciones producidas por XmlTextWriter pueden revelar información de ruta de acceso que no desea propagar a la aplicación. Las aplicaciones deben detectar las excepciones y procesarlas de la manera correspondiente.

  • Cuando se pasa XmlTextWriter a otra aplicación, la secuencia subyacente queda expuesta a esa aplicación. Si necesita pasar el objeto XmlTextWriter a una aplicación de confianza parcial, debería utilizar en su lugar un objeto XmlWriter creado por el método Create.

  • XmlTextWriter no valida los datos que se pasan a los WriteDocType métodos o WriteRaw . No debe pasar datos arbitrarios a estos métodos.

  • Si se cambia la configuración predeterminada, no hay ninguna garantía de que la salida generada sea datos XML con formato correcto.

  • No acepte componentes auxiliares, como un Encoding objeto, de un origen que no sea de confianza.

Constructores

XmlTextWriter(Stream, Encoding)

Crea una instancia de la clase XmlTextWriter mediante la secuencia y la codificación especificadas.

XmlTextWriter(String, Encoding)

Crea una instancia de la clase XmlTextWriter mediante el archivo especificado.

XmlTextWriter(TextWriter)

Crea una instancia de la clase XmlTextWriter mediante el objeto TextWriter especificado.

Propiedades

BaseStream

Obtiene el objeto de flujo subyacente.

Formatting

Indica cómo se da formato a la salida.

Indentation

Obtiene o establece el número de caracteres IndentChars que se escriben para cada nivel de la jerarquía cuando la propiedad Formatting está establecida en Formatting.Indented.

IndentChar

Obtiene o establece el carácter que se va a utilizar para aplicar sangría cuando la propiedad Formatting se establece en Formatting.Indented.

Namespaces

Obtiene o establece un valor que indica si se ha de aplicar la compatibilidad de espacio de nombres.

QuoteChar

Obtiene o establece qué carácter se va a usar para delimitar los valores de atributo.

Settings

Obtiene el objeto XmlWriterSettings que se usa para crear esta instancia de XmlWriter.

(Heredado de XmlWriter)
WriteState

Obtiene el estado del sistema de escritura.

XmlLang

Obtiene el ámbito de xml:lang actual.

XmlSpace

Obtiene XmlSpace que representa el ámbito de xml:space actual.

Métodos

Close()

Cierra este flujo y el flujo subyacente.

Dispose()

Libera todos los recursos usados por la instancia actual de la clase XmlWriter.

(Heredado de XmlWriter)
Dispose(Boolean)

Libera los recursos no administrados que usa XmlWriter y, de forma opcional, libera los recursos administrados.

(Heredado de XmlWriter)
DisposeAsync()

Realiza tareas definidas por la aplicación asociadas a la liberación o al restablecimiento de recursos no administrados de forma asincrónica.

(Heredado de XmlWriter)
DisposeAsyncCore()

Realiza tareas definidas por la aplicación asociadas a la liberación, liberación o restablecimiento de recursos administrados de forma asincrónica.

(Heredado de XmlWriter)
Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.

(Heredado de Object)
Flush()

Vuelca el contenido del búfer en los flujos subyacentes y también vuelca el flujo subyacente.

FlushAsync()

Vuelca asincrónicamente el contenido del búfer en los flujos subyacentes y también vuelca el flujo subyacente.

(Heredado de XmlWriter)
GetHashCode()

Sirve como la función hash predeterminada.

(Heredado de Object)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
LookupPrefix(String)

Devuelve el prefijo más próximo definido en el ámbito de espacio de nombres actual correspondiente al identificador URI de espacio de nombres.

MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)
WriteAttributes(XmlReader, Boolean)

Cuando se invalida en una clase derivada, escribe todos los atributos que se encuentran en la posición actual en XmlReader.

(Heredado de XmlWriter)
WriteAttributesAsync(XmlReader, Boolean)

De forma asincrónica escribe todos los atributos encontrados en la posición actual en XmlReader.

(Heredado de XmlWriter)
WriteAttributeString(String, String)

Cuando se invalida en una clase derivada, escribe el atributo con el valor y nombre local especificados.

(Heredado de XmlWriter)
WriteAttributeString(String, String, String)

Cuando se invalida en una clase derivada, escribe un atributo con el valor, nombre local e identificador URI del espacio de nombres especificados.

(Heredado de XmlWriter)
WriteAttributeString(String, String, String, String)

Cuando se invalida en una clase derivada, escribe el atributo con el prefijo, el nombre local, el identificador URI de espacio de nombres y el valor especificados.

(Heredado de XmlWriter)
WriteAttributeStringAsync(String, String, String, String)

Escribe asincrónicamente un atributo con el prefijo, el nombre local, el URI del espacio de nombres y el valor especificados.

(Heredado de XmlWriter)
WriteBase64(Byte[], Int32, Int32)

Codifica los bytes binarios especificados en base64 y escribe el texto resultante.

WriteBase64Async(Byte[], Int32, Int32)

Codifica asincrónicamente los bytes binarios especificados en Base64 y escribe el texto resultante.

(Heredado de XmlWriter)
WriteBinHex(Byte[], Int32, Int32)

Codifica los bytes binarios especificados como binhex y escribe el texto resultante.

WriteBinHexAsync(Byte[], Int32, Int32)

Codifica asincrónicamente los bytes binarios especificados como BinHex y escribe el texto resultante.

(Heredado de XmlWriter)
WriteCData(String)

Escribe un bloque <![CDATA[...]]> que contiene el texto especificado.

WriteCDataAsync(String)

Escribe asincrónicamente un bloque <![CDATA[...]]> que contiene el texto especificado.

(Heredado de XmlWriter)
WriteCharEntity(Char)

Impone la generación de una entidad de caracteres para el valor de carácter Unicode especificado.

WriteCharEntityAsync(Char)

Impone asincrónicamente la generación de una entidad de caracteres para el valor de carácter Unicode especificado.

(Heredado de XmlWriter)
WriteChars(Char[], Int32, Int32)

Escribe texto en un búfer cada vez.

WriteCharsAsync(Char[], Int32, Int32)

Escribe asincrónicamente texto en un búfer cada vez.

(Heredado de XmlWriter)
WriteComment(String)

Escribe un comentario <!--...--> que contiene el texto especificado.

WriteCommentAsync(String)

De forma asincrónica escribe un comentario <!--...--> que contiene el texto especificado.

(Heredado de XmlWriter)
WriteDocType(String, String, String, String)

Escribe la declaración DOCTYPE con el nombre y los atributos opcionales especificados.

WriteDocTypeAsync(String, String, String, String)

Escribe asincrónicamente la declaración DOCTYPE con el nombre y los atributos opcionales especificados.

(Heredado de XmlWriter)
WriteElementString(String, String)

Escribe un elemento con el nombre local y el valor especificados.

(Heredado de XmlWriter)
WriteElementString(String, String, String)

Escribe un elemento con el nombre local especificado, el URI de espacio de nombres y el valor.

(Heredado de XmlWriter)
WriteElementString(String, String, String, String)

Escribe un elemento con el prefijo, nombre local, el URI de espacio de nombres y el valor especificados.

(Heredado de XmlWriter)
WriteElementStringAsync(String, String, String, String)

Escribe asincrónicamente un elemento con el nombre local, el URI de espacio de nombres, el valor y el prefijo especificados.

(Heredado de XmlWriter)
WriteEndAttribute()

Cierra la anterior llamada al método WriteStartAttribute(String, String, String).

WriteEndAttributeAsync()

Cierra de forma asincrónica la llamada anterior al método WriteStartAttribute(String, String) .

(Heredado de XmlWriter)
WriteEndDocument()

Cierra todos los elementos o atributos abiertos y coloca de nuevo el sistema de escritura en el estado de inicio.

WriteEndDocumentAsync()

Cierra asincrónicamente todos los elementos o atributos abiertos y coloca de nuevo el sistema de escritura en el estado de inicio.

(Heredado de XmlWriter)
WriteEndElement()

Cierra un elemento y extrae el correspondiente ámbito de espacio de nombres.

WriteEndElementAsync()

Cierra asincrónicamente un elemento y extrae el correspondiente ámbito de espacio de nombres.

(Heredado de XmlWriter)
WriteEntityRef(String)

Escribe una referencia a entidad como &name;.

WriteEntityRefAsync(String)

De forma asincrónica coloca una referencia de entidad en tipo como &name;.

(Heredado de XmlWriter)
WriteFullEndElement()

Cierra un elemento y extrae el correspondiente ámbito de espacio de nombres.

WriteFullEndElementAsync()

Cierra asincrónicamente un elemento y extrae el correspondiente ámbito de espacio de nombres.

(Heredado de XmlWriter)
WriteName(String)

Escribe el nombre especificado y garantiza que se trata de un nombre válido de acuerdo con la recomendación relativa a XML 1.0 de W3C.

WriteNameAsync(String)

Escribe asincrónicamente el nombre especificado, asegurando que se trata de un nombre válido de acuerdo con la recomendación relativa a XML 1.0 del Consorcio W3C (https://www.w3.org/TR/1998/REC-xml-19980210#NT-Name).

(Heredado de XmlWriter)
WriteNmToken(String)

Escribe el nombre especificado y garantiza que se trata de un elemento NmToken válido de acuerdo con la recomendación relativa a XML 1.0 de W3C.

WriteNmTokenAsync(String)

Escribe asincrónicamente el nombre especificado, asegurando que se trata de un NmToken válido de acuerdo con la recomendación relativa a XML 1.0 del Consorcio W3C (https://www.w3.org/TR/1998/REC-xml-19980210#NT-Name).

(Heredado de XmlWriter)
WriteNode(XmlReader, Boolean)

Cuando se invalida en una clase derivada, copia todo el contenido del lector en el sistema de escritura y desplaza el lector al inicio del siguiente nodo relacionado.

(Heredado de XmlWriter)
WriteNode(XPathNavigator, Boolean)

Copia todo el contenido del objeto XPathNavigator en el sistema de escritura. La posición de XPathNavigator permanece inalterada.

(Heredado de XmlWriter)
WriteNodeAsync(XmlReader, Boolean)

Copia asincrónicamente todo el contenido del lector en el sistema de escritura y desplaza el lector al inicio del siguiente nodo relacionado.

(Heredado de XmlWriter)
WriteNodeAsync(XPathNavigator, Boolean)

De forma asincrónica copia todo el objeto de XPathNavigator al escritor. La posición de XPathNavigator permanece inalterada.

(Heredado de XmlWriter)
WriteProcessingInstruction(String, String)

Escribe una instrucción de procesamiento con un espacio entre el nombre y el texto: <?nombre texto?>.

WriteProcessingInstructionAsync(String, String)

Escribe de forma asincrónica una instrucción de procesamiento con un espacio entre el nombre y el texto: <?nombre texto?>.

(Heredado de XmlWriter)
WriteQualifiedName(String, String)

Escribe el nombre completo del espacio de nombres. Este método busca un prefijo que está en el ámbito del espacio de nombres especificado.

WriteQualifiedNameAsync(String, String)

Escribe asincrónicamente el nombre completo del espacio de nombres. Este método busca un prefijo que está en el ámbito del espacio de nombres especificado.

(Heredado de XmlWriter)
WriteRaw(Char[], Int32, Int32)

Escribe manualmente el marcado sin formato de un búfer de caracteres.

WriteRaw(String)

Escribe manualmente el marcado sin formato de una cadena.

WriteRawAsync(Char[], Int32, Int32)

Escribe asincrónicamente el marcado sin formato de un búfer de caracteres.

(Heredado de XmlWriter)
WriteRawAsync(String)

Escribe asincrónicamente el marcado sin formato de una cadena.

(Heredado de XmlWriter)
WriteStartAttribute(String)

Escribe el inicio de un atributo con el nombre local especificado.

(Heredado de XmlWriter)
WriteStartAttribute(String, String)

Escribe el inicio de un atributo con el URI de espacio de nombres y el nombre local especificados.

(Heredado de XmlWriter)
WriteStartAttribute(String, String, String)

Escribe el inicio de un atributo.

WriteStartAttributeAsync(String, String, String)

Escribe asincrónicamente el inicio de un atributo con el prefijo, URI de espacio de nombres y el nombre local especificados.

(Heredado de XmlWriter)
WriteStartDocument()

Escribe la declaración XML con la versión "1.0".

WriteStartDocument(Boolean)

Escribe la declaración XML con la versión "1.0" así como el atributo independiente.

WriteStartDocumentAsync()

Escribe asincrónicamente la declaración XML con la versión "1.0".

(Heredado de XmlWriter)
WriteStartDocumentAsync(Boolean)

Escribe asincrónicamente la declaración XML con la versión "1.0" así como el atributo independiente.

(Heredado de XmlWriter)
WriteStartElement(String)

Cuando se invalida en una clase derivada, escribe una etiqueta de apertura con el nombre local especificado.

(Heredado de XmlWriter)
WriteStartElement(String, String)

Cuando se invalida en una clase derivada, escribe la etiqueta de apertura especificada y la asocia al espacio de nombres especificado.

(Heredado de XmlWriter)
WriteStartElement(String, String, String)

Escribe la etiqueta de apertura especificada y la asocia al espacio de nombres y al prefijo especificados.

WriteStartElementAsync(String, String, String)

Escribe asincrónicamente la etiqueta de apertura especificada y la asocia al espacio de nombres y al prefijo especificados.

(Heredado de XmlWriter)
WriteString(String)

Escribe el contenido de texto especificado.

WriteStringAsync(String)

Escribe asincrónicamente el contenido de texto dado.

(Heredado de XmlWriter)
WriteSurrogateCharEntity(Char, Char)

Genera y escribe la entidad de carácter suplente del par de caracteres suplentes.

WriteSurrogateCharEntityAsync(Char, Char)

Genera y escribe asincrónicamente la entidad de carácter suplente del par de caracteres suplentes.

(Heredado de XmlWriter)
WriteValue(Boolean)

Escribe un valor Boolean.

(Heredado de XmlWriter)
WriteValue(DateTime)

Escribe un valor DateTime.

(Heredado de XmlWriter)
WriteValue(DateTimeOffset)

Escribe un valor DateTimeOffset.

(Heredado de XmlWriter)
WriteValue(Decimal)

Escribe un valor Decimal.

(Heredado de XmlWriter)
WriteValue(Double)

Escribe un valor Double.

(Heredado de XmlWriter)
WriteValue(Int32)

Escribe un valor Int32.

(Heredado de XmlWriter)
WriteValue(Int64)

Escribe un valor Int64.

(Heredado de XmlWriter)
WriteValue(Object)

Escribe el valor del objeto.

(Heredado de XmlWriter)
WriteValue(Single)

Escribe un número de punto flotante de precisión sencilla.

(Heredado de XmlWriter)
WriteValue(String)

Escribe un valor String.

(Heredado de XmlWriter)
WriteWhitespace(String)

Escribe el espacio en blanco especificado.

WriteWhitespaceAsync(String)

Escribe asincrónicamente el espacio en blanco especificado.

(Heredado de XmlWriter)

Implementaciones de interfaz explícitas

IDisposable.Dispose()

Para obtener una descripción de este miembro, vea Dispose().

(Heredado de XmlWriter)

Métodos de extensión

ConfigureAwait(IAsyncDisposable, Boolean)

Configura la forma en la que se realizan las expresiones await en las tareas devueltas desde un elemento asincrónico descartable.

Se aplica a

Consulte también