XmlTextWriter Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Representa um escritor que fornece uma forma rápida, não armazenada em cache e apenas para avançar, de gerar fluxos ou ficheiros contendo dados XML que cumprem a W3C Extensible Markup Language (XML) 1.0 e as recomendações Namespaces in XML.
Recomendamos que utilize a XmlWriter aula em vez disso.
public ref class XmlTextWriter : System::Xml::XmlWriter
public class XmlTextWriter : System.Xml.XmlWriter
type XmlTextWriter = class
inherit XmlWriter
Public Class XmlTextWriter
Inherits XmlWriter
- Herança
Observações
A XmlTextWriter classe implementa a XmlWriter classe.
Note
Recomendamos que crie instâncias XmlWriter usando o método XmlWriter.Create e a classe XmlWriterSettings para aproveitar a nova funcionalidade.
XmlTextWriter Mantém uma pilha de namespaces correspondente a todos os namespaces definidos na pilha de elementos atual. Usando XmlTextWriter você pode declarar namespaces 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 C# produz a seguinte saída.
XmlTextWriter Promove a declaração de namespace para o elemento raiz para evitar que ela seja duplicada nos dois elementos filho. Os elementos filho adotam o prefixo da declaração de namespaces.
<root xmlns:x="urn:1">
<x:item/>
<x:item/>
</root>
XmlTextWriter também permite que você substitua a declaração de namespace atual. No exemplo a seguir, o URI do namespace "123" é substituído por "abc" para produzir o elemento <x:node xmlns:x="abc"/>XML.
w.WriteStartElement("x","node","123");
w.WriteAttributeString("xmlns","x",null,"abc");
Ao usar os métodos de escrita que tomam um prefixo como argumento, também pode especificar qual o prefixo a usar. No exemplo a seguir, dois prefixos diferentes são mapeados para o mesmo URI de namespace para produzir o 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();
Se houver várias declarações de namespace mapeando prefixos diferentes para o mesmo URI de namespace, XmlTextWriter percorre a pilha de declarações de namespace para trás e seleciona a mais próxima.
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();
Neste exemplo de C#, como a WriteAttributeString chamada não especifica um prefixo, o autor usa o último prefixo empurrado para a pilha do espaço de nomes e produz o seguinte XML:
<x:root xmlns:x="urn:1">
<y:item y:attr="123" xmlns:y="urn:1" />
</x:root>
Se ocorrerem conflitos de namespace, XmlTextWriter resolva-os gerando prefixos alternativos. Por exemplo, se um atributo e um elemento tiverem o mesmo prefixo, mas namespaces diferentes, XmlWriter gerará um prefixo alternativo para o atributo. Os prefixos gerados são nomeados n{i} onde i é um número que começa em 1. O número é redefinido para 1 para cada elemento.
Os atributos associados a um URI de namespace devem ter um prefixo (namespaces padrão não se aplicam a atributos). Isso está em conformidade com a seção 5.2 da recomendação W3C Namespaces in XML. Se um atributo fizer referência a um URI de namespace, mas não especificar um prefixo, o gravador gerará um prefixo para o atributo.
Ao escrever um elemento vazio, um espaço adicional é adicionado entre o nome da tag e a tag de fechamento, por exemplo <item />. Isso fornece compatibilidade com navegadores mais antigos.
Quando String é usado como parâmetro de método, null e String.Empty são equivalentes.
String.Empty segue as regras do W3C.
Para gravar dados fortemente tipados, use a classe XmlConvert para converter tipos de dados para cadeia de caracteres. Por exemplo, o código C# a seguir converte os dados de Double para String e grava o elemento <price>19.95</price>.
Double price = 19.95;
writer.WriteElementString("price", XmlConvert.ToString(price));
XmlTextWriter não verifica o seguinte:
- Caracteres inválidos em nomes de atributos e elementos.
- Caracteres Unicode que não se ajustam à codificação especificada. Se os caracteres Unicode não se ajustarem à codificação especificada, o
XmlTextWriternão converterá os caracteres Unicode em entidades de caracteres. - Atributos duplicados.
- Caracteres presentes no identificador público DOCTYPE ou no identificador de sistema.
Considerações de segurança
Os itens a seguir são coisas a considerar ao trabalhar com a XmlTextWriter classe.
As exceções lançadas pelo XmlTextWriter podem divulgar informações de caminho que o utilizador não deseja que sejam reveladas ao aplicativo. Seus aplicativos devem detetar exceções e processá-las adequadamente.
Quando se passa o XmlTextWriter para outra aplicação, o fluxo subjacente é exposto a essa aplicação. Se você precisar passar o XmlTextWriter para um aplicativo semiconfiável, você deve usar um XmlWriter objeto criado pelo Create método em vez disso.
O XmlTextWriter não valida quaisquer dados que são passados para os WriteDocType métodos ou WriteRaw . Você não deve passar dados arbitrários para esses métodos.
Se as configurações padrão forem alteradas, não há garantia de que a saída gerada seja de dados XML bem formados.
Não aceite componentes de suporte, como um Encoding objeto, de uma fonte não confiável.
Construtores
| Name | Descrição |
|---|---|
| XmlTextWriter(Stream, Encoding) |
Cria uma instância da |
| XmlTextWriter(String, Encoding) |
Cria uma instância da XmlTextWriter classe usando o ficheiro especificado. |
| XmlTextWriter(TextWriter) |
Cria uma instância da |
Propriedades
| Name | Descrição |
|---|---|
| BaseStream |
Obtém o objeto de fluxo subjacente. |
| Formatting |
Indica como a saída está formatada. |
| Indentation |
Obtém ou define quantos IndentChars escrever para cada nível na hierarquia quando Formatting está definido para |
| IndentChar |
Obtém ou define qual carácter usar para indentação quando Formatting está definido como |
| Namespaces |
Recebe ou define um valor que indica se deve fazer suporte a namespace. |
| QuoteChar |
Obtém ou define qual carácter usar para citar valores de atributos. |
| Settings |
Obtém o XmlWriterSettings objeto usado para criar esta XmlWriter instância. (Herdado de XmlWriter) |
| WriteState |
Percebe o estado do escritor. |
| XmlLang |
Recebe o âmbito atual |
| XmlSpace |
Recebe um XmlSpace que representa o âmbito atual |
Métodos
| Name | Descrição |
|---|---|
| Close() |
Fecha este riacho e o curso subjacente. |
| Dispose() |
Liberta todos os recursos usados pela instância atual da XmlWriter classe. (Herdado de XmlWriter) |
| Dispose(Boolean) |
Liberta os recursos não geridos usados pelo XmlWriter e opcionalmente liberta os recursos geridos. (Herdado de XmlWriter) |
| DisposeAsync() |
Realiza tarefas definidas pela aplicação associadas à libertação, libertação ou reinício de recursos não geridos de forma assíncrona. (Herdado de XmlWriter) |
| DisposeAsyncCore() |
Realiza tarefas definidas pela aplicação associadas à libertação, libertação ou reinício de recursos geridos de forma assíncrona. (Herdado de XmlWriter) |
| Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
| Flush() |
Lava o que está no buffer para os fluxos subjacentes e também lava o jato subjacente. |
| FlushAsync() |
Lava assíncronamente o que está no buffer para os fluxos subjacentes e também lava o fluxo subjacente. (Herdado de XmlWriter) |
| GetHashCode() |
Serve como função de hash predefinida. (Herdado de Object) |
| GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
| LookupPrefix(String) |
Devolve o prefixo mais próximo definido no escopo atual do espaço de nomes para o espaço de nomes URI. |
| MemberwiseClone() |
Cria uma cópia superficial do atual Object. (Herdado de Object) |
| ToString() |
Devolve uma cadeia que representa o objeto atual. (Herdado de Object) |
| WriteAttributes(XmlReader, Boolean) |
Quando sobrescrito numa classe derivada, escreve todos os atributos encontrados na posição atual do XmlReader. (Herdado de XmlWriter) |
| WriteAttributesAsync(XmlReader, Boolean) |
De forma assíncrona, escreve todos os atributos encontrados na posição atual no XmlReader. (Herdado de XmlWriter) |
| WriteAttributeString(String, String, String, String) |
Quando sobreposto numa classe derivada, escreve o atributo com o prefixo especificado, nome local, URI do espaço de nomes e valor. (Herdado de XmlWriter) |
| WriteAttributeString(String, String, String) |
Quando sobrescrito numa classe derivada, escreve um atributo com o nome local especificado, o URI do espaço de nomes e o valor. (Herdado de XmlWriter) |
| WriteAttributeString(String, String) |
Quando sobrescrito numa classe derivada, escreve o atributo com o nome local e o valor especificados. (Herdado de XmlWriter) |
| WriteAttributeStringAsync(String, String, String, String) |
Escreve assíncronamente o atributo com o prefixo especificado, nome local, URI do espaço de nomes e valor. (Herdado de XmlWriter) |
| WriteBase64(Byte[], Int32, Int32) |
Codifica os bytes binários especificados como base64 e escreve o texto resultante. |
| WriteBase64Async(Byte[], Int32, Int32) |
Codifica assíncronamente os bytes binários especificados como Base64 e escreve o texto resultante. (Herdado de XmlWriter) |
| WriteBinHex(Byte[], Int32, Int32) |
Codifica os bytes binários especificados como binhex e escreve o texto resultante. |
| WriteBinHexAsync(Byte[], Int32, Int32) |
Codifica assíncronamente os bytes binários especificados como |
| WriteCData(String) |
Escreve um <![ CDATA[...]]> bloco contendo o texto especificado. |
| WriteCDataAsync(String) |
De forma assíncrona, escreve um <![ CDATA[...]]> bloco contendo o texto especificado. (Herdado de XmlWriter) |
| WriteCharEntity(Char) |
Força a geração de uma entidade de carácter para o valor especificado de carácter Unicode. |
| WriteCharEntityAsync(Char) |
Força assíncronamente a geração de uma entidade de carácter para o valor especificado de carácter Unicode. (Herdado de XmlWriter) |
| WriteChars(Char[], Int32, Int32) |
Escreve texto um buffer de cada vez. |
| WriteCharsAsync(Char[], Int32, Int32) |
O texto escreve assíncronamente um buffer de cada vez. (Herdado de XmlWriter) |
| WriteComment(String) |
Escreve um comentário <--...--> contendo o texto especificado. |
| WriteCommentAsync(String) |
Escreve assíncronamente um comentário <--...--> contendo o texto especificado. (Herdado de XmlWriter) |
| WriteDocType(String, String, String, String) |
Escreve a declaração DOCTYPE com o nome especificado e atributos opcionais. |
| WriteDocTypeAsync(String, String, String, String) |
Escreve assíncronamente a declaração DOCTYPE com o nome especificado e atributos opcionais. (Herdado de XmlWriter) |
| WriteElementString(String, String, String, String) |
Escreve um elemento com o prefixo especificado, nome local, URI do espaço de nomes e valor. (Herdado de XmlWriter) |
| WriteElementString(String, String, String) |
Escreve um elemento com o nome local especificado, o URI do espaço de nomes e o valor. (Herdado de XmlWriter) |
| WriteElementString(String, String) |
Escreve um elemento com o nome local e valor especificados. (Herdado de XmlWriter) |
| WriteElementStringAsync(String, String, String, String) |
Escreve assíncronamente um elemento com o prefixo especificado, nome local, URI do espaço de nomes e valor. (Herdado de XmlWriter) |
| WriteEndAttribute() |
Fecha a chamada anterior WriteStartAttribute(String, String, String) . |
| WriteEndAttributeAsync() |
Fecha assíncronamente a chamada anterior WriteStartAttribute(String, String) . (Herdado de XmlWriter) |
| WriteEndDocument() |
Fecha quaisquer elementos ou atributos abertos e coloca o escritor de volta no estado Start. |
| WriteEndDocumentAsync() |
Fecha assíncronamente quaisquer elementos ou atributos abertos e coloca o escritor de volta no estado Start. (Herdado de XmlWriter) |
| WriteEndElement() |
Fecha um elemento e abre o respetivo âmbito do espaço de nomes. |
| WriteEndElementAsync() |
Fecha assíncronamente um elemento e aparece o respetivo escopo do espaço de nomes. (Herdado de XmlWriter) |
| WriteEntityRef(String) |
Escreve uma referência de entidade como |
| WriteEntityRefAsync(String) |
De forma assíncrona, escreve uma referência de entidade como |
| WriteFullEndElement() |
Fecha um elemento e abre o respetivo âmbito do espaço de nomes. |
| WriteFullEndElementAsync() |
Fecha assíncronamente um elemento e aparece o respetivo escopo do espaço de nomes. (Herdado de XmlWriter) |
| WriteName(String) |
Escreve o nome especificado, garantindo que é um nome válido de acordo com a recomendação XML 1.0 do W3C. |
| WriteNameAsync(String) |
O Assíncrono escreve o nome especificado, garantindo que é um nome válido de acordo com a recomendação XML 1.0 do W3C (https://www.w3.org/TR/1998/REC-xml-19980210#NT-Name). (Herdado de XmlWriter) |
| WriteNmToken(String) |
Escreve o nome especificado, garantindo que é válido |
| WriteNmTokenAsync(String) |
Escreve assíncronamente o nome especificado, garantindo que é um NmToken válido de acordo com a recomendação XML 1.0 do W3C (https://www.w3.org/TR/1998/REC-xml-19980210#NT-Name). (Herdado de XmlWriter) |
| WriteNode(XmlReader, Boolean) |
Quando sobreposto numa classe derivada, copia tudo do leitor ao escritor e move o leitor para o início do irmão seguinte. (Herdado de XmlWriter) |
| WriteNode(XPathNavigator, Boolean) |
Copia tudo, desde o XPathNavigator objeto até ao escritor. A posição do XPathNavigator grupo mantém-se inalterada. (Herdado de XmlWriter) |
| WriteNodeAsync(XmlReader, Boolean) |
Copia assíncronamente tudo, do leitor ao escritor, e move o leitor para o início do próximo irmão. (Herdado de XmlWriter) |
| WriteNodeAsync(XPathNavigator, Boolean) |
Copia assíncronamente tudo do XPathNavigator objeto para o escritor. A posição do XPathNavigator grupo mantém-se inalterada. (Herdado de XmlWriter) |
| WriteProcessingInstruction(String, String) |
Escreve uma instrução de processamento com um espaço entre o nome e o texto da seguinte forma: <?nome texto?>. |
| WriteProcessingInstructionAsync(String, String) |
A Assíncrona escreve uma instrução de processamento com um espaço entre o nome e o texto da seguinte forma: <?nome texto?>. (Herdado de XmlWriter) |
| WriteQualifiedName(String, String) |
Escreve o nome qualificado no espaço de nomes. Este método procura o prefixo que está no âmbito do espaço de nomes dado. |
| WriteQualifiedNameAsync(String, String) |
Escreve assíncronamente o nome qualificado no espaço de nomes. Este método procura o prefixo que está no âmbito do espaço de nomes dado. (Herdado de XmlWriter) |
| WriteRaw(Char[], Int32, Int32) |
Escreve a marcação bruta manualmente a partir de um buffer de caracteres. |
| WriteRaw(String) |
Escreve a marcação bruta manualmente a partir de uma cadeia. |
| WriteRawAsync(Char[], Int32, Int32) |
A marcação bruta escreve de forma assíncrona manualmente a partir de um buffer de caracteres. (Herdado de XmlWriter) |
| WriteRawAsync(String) |
A marcação bruta escreve de forma assíncrona manualmente a partir de uma cadeia. (Herdado de XmlWriter) |
| WriteStartAttribute(String, String, String) |
Escreve o início de um atributo. |
| WriteStartAttribute(String, String) |
Escreve o início de um atributo com o nome local especificado e o espaço de nomes URI. (Herdado de XmlWriter) |
| WriteStartAttribute(String) |
Escreve o início de um atributo com o nome local especificado. (Herdado de XmlWriter) |
| WriteStartAttributeAsync(String, String, String) |
Escreve assíncronamente o início de um atributo com o prefixo especificado, nome local e espaço de nomes URI. (Herdado de XmlWriter) |
| WriteStartDocument() |
Escreve a declaração XML com a versão "1.0". |
| WriteStartDocument(Boolean) |
Escreve a declaração XML com a versão "1.0" e o atributo independente. |
| WriteStartDocumentAsync() |
Escreve assíncronamente a declaração XML com a versão "1.0". (Herdado de XmlWriter) |
| WriteStartDocumentAsync(Boolean) |
Escreve assíncronamente a declaração XML com a versão "1.0" e o atributo independente. (Herdado de XmlWriter) |
| WriteStartElement(String, String, String) |
Escreve a etiqueta inicial especificada e associa-a ao namespace e prefixo atribuídos. |
| WriteStartElement(String, String) |
Quando sobrescrito numa classe derivada, escreve a etiqueta inicial especificada e associa-a ao namespace dado. (Herdado de XmlWriter) |
| WriteStartElement(String) |
Quando sobrescrito numa classe derivada, escreve uma etiqueta de início com o nome local especificado. (Herdado de XmlWriter) |
| WriteStartElementAsync(String, String, String) |
Escreve assíncronamente a etiqueta inicial especificada e associa-a ao namespace e prefixo dados. (Herdado de XmlWriter) |
| WriteString(String) |
Escreve o texto fornecido. |
| WriteStringAsync(String) |
Escreve assíncronamente o conteúdo do texto indicado. (Herdado de XmlWriter) |
| WriteSurrogateCharEntity(Char, Char) |
Gera e escreve a entidade de carácter substituto para o par de caracteres substitutos. |
| WriteSurrogateCharEntityAsync(Char, Char) |
Gera e escreve assíncronamente a entidade de carácter substituto para o par de caracteres substitutos. (Herdado de XmlWriter) |
| WriteValue(Boolean) |
Escreve um Boolean valor. (Herdado de XmlWriter) |
| WriteValue(DateTime) |
Escreve um DateTime valor. (Herdado de XmlWriter) |
| WriteValue(DateTimeOffset) |
Escreve um DateTimeOffset valor. (Herdado de XmlWriter) |
| WriteValue(Decimal) |
Escreve um Decimal valor. (Herdado de XmlWriter) |
| WriteValue(Double) |
Escreve um Double valor. (Herdado de XmlWriter) |
| WriteValue(Int32) |
Escreve um Int32 valor. (Herdado de XmlWriter) |
| WriteValue(Int64) |
Escreve um Int64 valor. (Herdado de XmlWriter) |
| WriteValue(Object) |
Escreve o valor do objeto. (Herdado de XmlWriter) |
| WriteValue(Single) |
Escreve um número de ponto flutuante de precisão simples. (Herdado de XmlWriter) |
| WriteValue(String) |
Escreve um String valor. (Herdado de XmlWriter) |
| WriteWhitespace(String) |
Escreve o espaço em branco indicado. |
| WriteWhitespaceAsync(String) |
Escreve assíncronamente o espaço em branco dado. (Herdado de XmlWriter) |
Implementações de Interface Explícita
| Name | Descrição |
|---|---|
| IDisposable.Dispose() |
Para uma descrição deste elemento, veja Dispose(). (Herdado de XmlWriter) |
Métodos da Extensão
| Name | Descrição |
|---|---|
| ConfigureAwait(IAsyncDisposable, Boolean) |
Configura como aguarda nas tarefas devolvidas de um descartável assíncrono será realizada. |