Escrevendo arquivos XML com C#

Introdução

O objetivo deste tutorial é demonstrar o uso das ferramentas de manipulação de arquivos XML em C#. Para isto, o produto deste tutorial será um "Hello World" em WordprocessingML.

O Produto

O arquivo XML a ser gerado pelo código é o seguinte:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
  <w:body>
    <w:p>
        <w:r>
        <w:t>Hello world!</w:t>
      </w:r>
    </w:p>
  </w:body>
</w:document>

O código base

Este será o nosso ponto de partida neste tutorial:

using System;
class Hello 
{
        static void Main()
        {
                Console.WriteLine("Hello World!");
        }
} 

A classe XmlWriter

A classe XmlWriter é a interface entre o programador e o documento XML. Esta é uma classe abstrata, e a classe que a implementa em realidade é a XmlTextWriter.

Iremos comentar alguns métodos:
  • XmlTextWriter(string, Encoding): é o construtor do objeto. Seus parâmetros são: uma string com o nome do arquivo e a codificação desejada (a classe Encoding é uma enumeração das codificações suportadas).
  • WriteStartDocument(bool): escreve o cabeçalho do XML. Seu parâmetro é um booleano indicando se o documento é standalone ou não
  • WriteStartElement(string, string, string): escreve o elemento raiz do XML. Na verdade, você pode passar uma, duas ou três strings. Com uma é simplesmente o nome do elemento. Com duas é o nome, e o namespace URI. Com três é o prefixo, o nome e o namespace URI.
  • WriteEndElement(): escreve o fechamento do elemento raiz do XML.

Podemos escrever todo o XML com base nesta classe. Porém, ele possui uma estrutura linear (podemos dizer que é um stream de tags XML). Existe também o XmlDocument, que possui uma estrutura de árvore, mas seu uso é mais recomendado para fazer manipulação do objeto (como, por exemplo, quando você quer "copiar e colar" um texto que estava em um parágrafo para uma célula de tabela).

Last edited Mar 14, 2008 at 3:52 PM by thiagoaddevico, version 5

Comments

No comments yet.