TOC

This article has been localized into Portuguese by the community.

XML:

Escrevendo XML com a classe XmlWriter

Nos capítulos anteriores, lidamos com a leitura de XML, mas agora é hora de começar a escrevê-lo também. Como XML é simplesmente texto, você poderia começar a escrever tags XML em um arquivo e dar a ele uma extensão xml, mas é mais fácil e seguro deixar o .NET framework lidar com isso, e assim como com a leitura XML, há pelo menos duas opções diferentes: A abordagem XmlWriter e a abordagem XmlDocument. Este artigo focará na primeira abordagem e, em seguida, analisaremos a criação de XML com o XmlDocument no próximo capítulo.

A diferença entre os dois é mais uma vez relacionada principalmente ao consumo de memória - o XmlWriter usa menos memória que o XmlDocument, o que é um problema apenas se você gravar arquivos muito grandes. Outra diferença importante é que, ao usar o XmlDocument, você pode ler um arquivo existente, manipulá-lo e, em seguida, gravar as alterações. Com XmlWriter, você terá que escrever o documento inteiro do zero cada vez. Isso não é necessariamente um problema, como sempre, isso se resume à sua situação e às suas preferências pessoais.

Aqui está um exemplo de como escrever XML usando a classe XmlWriter:

using System;
using System.Text;
using System.Xml;

namespace WritingXml
{
    class Program
    {
        static void Main(string[] args)
        {
            XmlWriter xmlWriter = XmlWriter.Create("test.xml");

            xmlWriter.WriteStartDocument();
            xmlWriter.WriteStartElement("users");

            xmlWriter.WriteStartElement("user");
            xmlWriter.WriteAttributeString("age", "42");
            xmlWriter.WriteString("John Doe");
            xmlWriter.WriteEndElement();

            xmlWriter.WriteStartElement("user");
            xmlWriter.WriteAttributeString("age", "39");
            xmlWriter.WriteString("Jane Doe");

            xmlWriter.WriteEndDocument();
            xmlWriter.Close();
        }
    }
}

O código acima irá criar o seguinte XML:

<users>
  <user age="42">John Doe</user>
  <user age="39">Jane Doe</user>
</users>

Então, começamos criando uma instância da classe XmlWriter. Leva pelo menos um parâmetro, neste caso o caminho para onde o XML deve ser escrito, mas vem em muitas variações para vários propósitos. A primeira coisa que devemos fazer é chamar o método WriteStartDocument(). Depois disso, escrevemos um elemento inicial chamado "usuários". O XmlWriter traduzirá isso para <users> ;. Antes de fechá-lo, escrevemos outro elemento inicial, "user", que se tornará filho de "usuários". Em seguida, passamos a adicionar um atributo (age) ao elemento, usando o método WriteAttributeString(), e depois escrevemos o texto interno do elemento chamando o método WriteString(). Em seguida, fechamos o primeiro elemento "user" com uma chamada ao método WriteEndElement().

Esse processo é repetido para adicionar outro usuário, exceto que não chamamos WriteEndElement() como fizemos antes. Na verdade, ele deve ser chamado duas vezes, pois também temos um elemento "users" aberto, mas o XmlWriter fará isso para nós quando chamarmos o método WriteEndDocument().

Para que o XmlWriter grave nossos dados no disco, chamamos o método Close(). Agora você pode abrir o arquivo "test.xml" no mesmo diretório em que o arquivo EXE do seu projeto está, geralmente no diretório bin\debug.

E isso é tudo o que é preciso para escrever um arquivo XML simples. No próximo capítulo, faremos o mesmo, mas usando a classe XmlDocument.


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!