XmlTextWriter Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Representa un sistema de escritura que proporciona una forma rápida, no almacenada en caché y de solo avance de generar secuencias o archivos que contengan datos XML que se ajusten al lenguaje de marcado extensible (XML) 1.0 de W3C y a los espacios de nombres en recomendaciones XML.
Se recomienda usar la XmlWriter clase 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
Comentarios
La XmlTextWriter clase implementa la XmlWriter clase .
Note
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();
Este código de C# genera la salida siguiente.
XmlTextWriter promociona la declaración del espacio de nombres en el elemento raíz para evitar que se duplique en los dos elementos secundarios. Los elementos secundarios obtienen el prefijo de la declaración del espacio de nombres.
<root xmlns:x="urn:1">
<x:item/>
<x:item/>
</root>
XmlTextWriter también permite reemplazar la declaración del espacio de nombres actual. En el siguiente ejemplo, el URI del espacio de nombres "123" es reemplazado por "abc" para producir el elemento XML <x:node xmlns:x="abc"/>.
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 identificador URI del espacio de nombres para generar el texto XML <x:root xmlns:x="urn:1"><y:item xmlns:y="urn:1"/></x:root>.
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 este ejemplo de C#, dado que la WriteAttributeString llamada no especifica un prefijo, el escritor usa el último prefijo insertado en la pila de espacios 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 mediante la generación de 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 a partir de 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). De esta forma se cumple lo que se establece en 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 un String se usa como parámetro de método, null y String.Empty son equivalentes.
String.Empty sigue las reglas W3C.
Para escribir datos fuertemente tipados, utilice la XmlConvert clase para convertir tipos de datos en cadena de texto. Por ejemplo, el siguiente código de C# 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,
XmlTextWriterno convierte los caracteres Unicode en entidades de caracteres. - Atributos duplicados.
- Caracteres en el identificador público o el identificador del sistema DOCTYPE.
Consideraciones de 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 sobre la ruta de acceso que no desea propagar a la aplicación. Las aplicaciones deben detectar excepciones y procesarlas correctamente.
Al pasar XmlTextWriter a otra aplicación, el flujo subyacente queda expuesto a esa aplicación. Si necesita pasar el XmlTextWriter a una aplicación semi-confiable, debe usar un objeto XmlWriter creado por el método Create en su lugar.
XmlTextWriter no valida ningún dato que se pase a los métodos WriteDocType 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 tenga un formato correcto de los datos XML.
No acepte componentes auxiliares, como un Encoding objeto, de un origen que no sea de confianza.
Constructores
| Nombre | Description |
|---|---|
| XmlTextWriter(Stream, Encoding) |
Crea una instancia de la |
| XmlTextWriter(String, Encoding) |
Crea una instancia de la XmlTextWriter clase utilizando el archivo especificado. |
| XmlTextWriter(TextWriter) |
Crea una instancia de la |
Propiedades
| Nombre | Description |
|---|---|
| BaseStream |
Obtiene el objeto de secuencia subyacente. |
| Formatting |
Indica cómo se da formato a la salida. |
| Indentation |
Obtiene o establece el número de indentchars que se van a escribir para cada nivel de la jerarquía cuando Formatting se establece |
| IndentChar |
Obtiene o establece el carácter que se va a usar para aplicar sangría cuando Formatting se establece |
| Namespaces |
Obtiene o establece un valor que indica si se va a admitir el espacio de nombres. |
| QuoteChar |
Obtiene o establece qué carácter se va a usar para comillas de valores de atributo. |
| Settings |
Obtiene el XmlWriterSettings objeto usado para crear esta XmlWriter instancia. (Heredado de XmlWriter) |
| WriteState |
Obtiene el estado del escritor. |
| XmlLang |
Obtiene el ámbito actual |
| XmlSpace |
Obtiene un objeto XmlSpace que representa el ámbito actual |
Métodos
| Nombre | Description |
|---|---|
| Close() |
Cierra esta secuencia y la secuencia subyacente. |
| Dispose() |
Libera todos los recursos usados por la instancia actual de la XmlWriter clase . (Heredado de XmlWriter) |
| Dispose(Boolean) |
Libera los recursos no administrados utilizados por XmlWriter y, opcionalmente, libera los recursos administrados. (Heredado de XmlWriter) |
| DisposeAsync() |
Realiza tareas definidas por la aplicación asociadas a la liberación, liberación o 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 al objeto actual. (Heredado de Object) |
| Flush() |
Vacía lo que se encuentra en el búfer en las secuencias subyacentes y también vacía la secuencia subyacente. |
| FlushAsync() |
Vacía de forma asincrónica lo que se encuentra en el búfer en las secuencias subyacentes y también vacía la secuencia subyacente. (Heredado de XmlWriter) |
| GetHashCode() |
Actúa como 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 cercano definido en el ámbito del espacio de nombres actual para el URI del espacio de nombres. |
| MemberwiseClone() |
Crea una copia superficial del Objectactual. (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 encontrados en la posición actual de XmlReader. (Heredado de XmlWriter) |
| WriteAttributesAsync(XmlReader, Boolean) |
Escribe de forma asincrónica todos los atributos encontrados en la posición actual de XmlReader. (Heredado de XmlWriter) |
| WriteAttributeString(String, String, String, String) |
Cuando se reemplaza en una clase derivada, escribe el atributo con el prefijo, el nombre local, el URI del espacio de nombres y el valor especificados. (Heredado de XmlWriter) |
| WriteAttributeString(String, String, String) |
Cuando se reemplaza en una clase derivada, escribe un atributo con el nombre local, el URI del espacio de nombres y el valor especificados. (Heredado de XmlWriter) |
| WriteAttributeString(String, String) |
Cuando se invalida en una clase derivada, escribe el atributo con el nombre y el valor locales especificados. (Heredado de XmlWriter) |
| WriteAttributeStringAsync(String, String, String, String) |
Escribe de forma asincrónica el 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 como base64 y escribe el texto resultante. |
| WriteBase64Async(Byte[], Int32, Int32) |
Codifica de forma asincrónica los bytes binarios especificados como 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 de forma asincrónica los bytes binarios especificados como |
| WriteCData(String) |
Escribe un <objeto ![ CDATA[...]]> bloque que contiene el texto especificado. |
| WriteCDataAsync(String) |
Escribe de forma asincrónica un <elemento ![ CDATA[...]]> bloque que contiene el texto especificado. (Heredado de XmlWriter) |
| WriteCharEntity(Char) |
Fuerza la generación de una entidad de caracteres para el valor de carácter Unicode especificado. |
| WriteCharEntityAsync(Char) |
Fuerza 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 un búfer de texto a la vez. |
| WriteCharsAsync(Char[], Int32, Int32) |
Escribe de forma asincrónica un búfer de texto a la vez. (Heredado de XmlWriter) |
| WriteComment(String) |
Escribe un comentario <--...--> que contiene el texto especificado. |
| WriteCommentAsync(String) |
Escribe de forma asincrónica un comentario <--...--> que contiene el texto especificado. (Heredado de XmlWriter) |
| WriteDocType(String, String, String, String) |
Escribe la declaración DOCTYPE con el nombre especificado y los atributos opcionales. |
| WriteDocTypeAsync(String, String, String, String) |
Escribe asincrónicamente la declaración DOCTYPE con el nombre especificado y los atributos opcionales. (Heredado de XmlWriter) |
| WriteElementString(String, String, String, String) |
Escribe un elemento con el prefijo, el nombre local, el URI del espacio de nombres y el valor especificados. (Heredado de XmlWriter) |
| WriteElementString(String, String, String) |
Escribe un elemento con el nombre local, el URI del espacio de nombres y el valor especificados. (Heredado de XmlWriter) |
| WriteElementString(String, String) |
Escribe un elemento con el nombre y el valor locales especificados. (Heredado de XmlWriter) |
| WriteElementStringAsync(String, String, String, String) |
Escribe de forma asincrónica un elemento con el prefijo, el nombre local, el URI del espacio de nombres y el valor especificados. (Heredado de XmlWriter) |
| WriteEndAttribute() |
Cierra la llamada anterior WriteStartAttribute(String, String, String) . |
| WriteEndAttributeAsync() |
Cierra de forma asincrónica la llamada anterior WriteStartAttribute(String, String) . (Heredado de XmlWriter) |
| WriteEndDocument() |
Cierra todos los elementos o atributos abiertos y vuelve a colocar el escritor en el estado Start. |
| WriteEndDocumentAsync() |
Cierra de forma asincrónica los atributos o elementos abiertos y vuelve a colocar el escritor en el estado Inicio. (Heredado de XmlWriter) |
| WriteEndElement() |
Cierra un elemento y muestra el ámbito del espacio de nombres correspondiente. |
| WriteEndElementAsync() |
Cierra de forma asincrónica un elemento y abre el ámbito del espacio de nombres correspondiente. (Heredado de XmlWriter) |
| WriteEntityRef(String) |
Escribe una referencia de entidad como |
| WriteEntityRefAsync(String) |
Escribe asincrónicamente una referencia de entidad como |
| WriteFullEndElement() |
Cierra un elemento y muestra el ámbito del espacio de nombres correspondiente. |
| WriteFullEndElementAsync() |
Cierra de forma asincrónica un elemento y abre el ámbito del espacio de nombres correspondiente. (Heredado de XmlWriter) |
| WriteName(String) |
Escribe el nombre especificado, asegurándose de que es un nombre válido según la recomendación W3C XML 1.0. |
| WriteNameAsync(String) |
Escribe de forma asincrónica el nombre especificado, asegurándose de que es un nombre válido según la recomendación W3C XML 1.0 (https://www.w3.org/TR/1998/REC-xml-19980210#NT-Name). (Heredado de XmlWriter) |
| WriteNmToken(String) |
Escribe el nombre especificado, asegurándose de que es válido |
| WriteNmTokenAsync(String) |
Escribe de forma asincrónica el nombre especificado, asegurándose de que es un NmToken válido según la recomendación W3C XML 1.0 (https://www.w3.org/TR/1998/REC-xml-19980210#NT-Name). (Heredado de XmlWriter) |
| WriteNode(XmlReader, Boolean) |
Cuando se reemplaza en una clase derivada, copia todo el contenido del lector al escritor y mueve el lector al principio del siguiente elemento relacionado. (Heredado de XmlWriter) |
| WriteNode(XPathNavigator, Boolean) |
Copia todo desde el XPathNavigator objeto hasta el escritor. La posición de permanece XPathNavigator sin cambios. (Heredado de XmlWriter) |
| WriteNodeAsync(XmlReader, Boolean) |
Copia de forma asincrónica todo desde el lector hasta el escritor y mueve el lector al principio del siguiente elemento relacionado. (Heredado de XmlWriter) |
| WriteNodeAsync(XPathNavigator, Boolean) |
Copia de forma asincrónica todo desde el XPathNavigator objeto al escritor. La posición de permanece XPathNavigator sin cambios. (Heredado de XmlWriter) |
| WriteProcessingInstruction(String, String) |
Escribe una instrucción de procesamiento con un espacio entre el nombre y el texto de la siguiente manera: <?name text?>. |
| WriteProcessingInstructionAsync(String, String) |
Escribe de forma asincrónica una instrucción de procesamiento con un espacio entre el nombre y el texto de la siguiente manera: <?name text?>. (Heredado de XmlWriter) |
| WriteQualifiedName(String, String) |
Escribe el nombre calificado del espacio de nombres. Este método busca el prefijo que está en el ámbito del espacio de nombres especificado. |
| WriteQualifiedNameAsync(String, String) |
Escribe de forma asincrónica el nombre completo del espacio de nombres. Este método busca el prefijo que está en el ámbito del espacio de nombres especificado. (Heredado de XmlWriter) |
| WriteRaw(Char[], Int32, Int32) |
Escribe el marcado sin procesar manualmente desde un búfer de caracteres. |
| WriteRaw(String) |
Escribe el marcado sin procesar manualmente desde una cadena. |
| WriteRawAsync(Char[], Int32, Int32) |
Escribe de forma asincrónica el marcado sin procesar manualmente desde un búfer de caracteres. (Heredado de XmlWriter) |
| WriteRawAsync(String) |
Escribe de forma asincrónica el marcado sin procesar manualmente desde una cadena. (Heredado de XmlWriter) |
| WriteStartAttribute(String, String, String) |
Escribe el inicio de un atributo. |
| WriteStartAttribute(String, String) |
Escribe el inicio de un atributo con el nombre local y el URI del espacio de nombres especificados. (Heredado de XmlWriter) |
| WriteStartAttribute(String) |
Escribe el inicio de un atributo con el nombre local especificado. (Heredado de XmlWriter) |
| WriteStartAttributeAsync(String, String, String) |
Escribe de forma asincrónica el inicio de un atributo con el prefijo, el nombre local y el URI del espacio de nombres 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" y el atributo independiente. |
| WriteStartDocumentAsync() |
Escribe de forma asincrónica 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" y el atributo independiente. (Heredado de XmlWriter) |
| WriteStartElement(String, String, String) |
Escribe la etiqueta de inicio especificada y la asocia al espacio de nombres y al prefijo especificados. |
| WriteStartElement(String, String) |
Cuando se reemplaza en una clase derivada, escribe la etiqueta de inicio especificada y la asocia al espacio de nombres especificado. (Heredado de XmlWriter) |
| WriteStartElement(String) |
Cuando se invalida en una clase derivada, escribe una etiqueta start con el nombre local especificado. (Heredado de XmlWriter) |
| WriteStartElementAsync(String, String, String) |
Escribe de forma asincrónica la etiqueta de inicio 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 de forma asincrónica el contenido de texto especificado. (Heredado de XmlWriter) |
| WriteSurrogateCharEntity(Char, Char) |
Genera y escribe la entidad de caracteres suplentes para el par de caracteres suplentes. |
| WriteSurrogateCharEntityAsync(Char, Char) |
Genera y escribe de forma asincrónica la entidad de caracteres suplentes para el par de caracteres suplentes. (Heredado de XmlWriter) |
| WriteValue(Boolean) |
Escribe un Boolean valor. (Heredado de XmlWriter) |
| WriteValue(DateTime) |
Escribe un DateTime valor. (Heredado de XmlWriter) |
| WriteValue(DateTimeOffset) |
Escribe un DateTimeOffset valor. (Heredado de XmlWriter) |
| WriteValue(Decimal) |
Escribe un Decimal valor. (Heredado de XmlWriter) |
| WriteValue(Double) |
Escribe un Double valor. (Heredado de XmlWriter) |
| WriteValue(Int32) |
Escribe un Int32 valor. (Heredado de XmlWriter) |
| WriteValue(Int64) |
Escribe un Int64 valor. (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 String valor. (Heredado de XmlWriter) |
| WriteWhitespace(String) |
Escribe el espacio en blanco especificado. |
| WriteWhitespaceAsync(String) |
Escribe de forma asincrónica el espacio en blanco especificado. (Heredado de XmlWriter) |
Implementaciones de interfaz explícitas
| Nombre | Description |
|---|---|
| IDisposable.Dispose() |
Para obtener una descripción de este miembro, vea Dispose(). (Heredado de XmlWriter) |
Métodos de extensión
| Nombre | Description |
|---|---|
| ConfigureAwait(IAsyncDisposable, Boolean) |
Configura cómo se realizarán las esperas en las tareas devueltas desde un descartable asincrónico. |