De que se trata o artigo

Este artigo apresenta os primeiros passos usando o C# para fazer a leitura e a criação de documentos XML. Através de classes próprias do C# (tal como a XmlReader), será possível manipular por completo esses tipos de documentos.

Em que situação o tema é útil

O tema é útil quando for necessário criar uma forma padronizada de transportar dados (em formato de texto) de uma aplicação para outra. Através do XML será possível criar arquivos com padrões pré-definidos, servindo até mesmo para salvar pequenas informações, como logs de registros, configurações da sua aplicação etc. Um exemplo bastante comum é o uso da Nota Fiscal Eletrônica, que utiliza XML como padrão para a transmissão de dados.

Primeiros passos com documentos XML - Manipulando documentos XML no C#

O XML é composto, basicamente, por texto puro. Seus elementos lembram muito outra linguagem: o HTML, porém, possuindo regras distintas (que serão vistas no decorrer do artigo) para formação dos documentos. Sua manipulação dentro dos programas é uma tarefa mais complexa, principalmente por causa da hierarquia dos seus elementos e das regras para que estes documentos sejam bem formados. O Framework .NET e a linguagem C# facilitam muito o trabalho com os arquivos XML, já que disponibiliza uma estrutura completa para o uso do mesmo. Assim, neste artigo será desenvolvido um pequeno aplicativo que irá servir de base para a manipulação de documentos XML (tanto para leitura e escrita).

No final da década de 1990 a Internet começou a consolidar-se como plataforma para aplicações mais robustas, como aquelas voltadas para o ambiente coorporativo. Logo, surgiu a necessidade de definir uma forma de facilmente fazer a troca de dados entre estas aplicações, o que apontou um problema: naquela época o ambiente e as linguagens usadas para criação destas aplicações não era homogêneo, o que dificultava ainda mais a integração.

Além disso, havia a questão da segurança, uma vez que alguns firewalls barravam certos protocolos e tipos de dados (como ainda fazem), era preciso que os dados pudessem resolver este problema sem expor a segurança.

Por causa destes e de outros pontos, foi definida a linguagem XML – eXtensible Markup Language – para a criação dos documentos, que tem como principal vantagem serem formados por texto puro, o que garante livre passagem pelos Firewalls usando o protocolo HTTP, sem comprometer a segurança.

As principais características dos documentos XML podem ser enumeradas da seguinte forma:

1. Conteúdo definido através de TAGS da mesma forma que os documentos HTML, apenas com a consideração de que para cada TAG aberta, outra de fechamento deve ser definida. Assim, se no documento existir uma TAG <cliente> aberta para armazenar o conteúdo, uma tag </cliente> de fechamento deve ser informada ao final do mesmo. Também é possível ter um elemento vazio usando a TAG <cliente /> (da mesma forma que na linguagem HTML).

2. O documento é criado de forma hierárquica. É possível ter vários elementos – que são chamados tecnicamente de nós – aninhados, o que possibilita a expressão de tipos de dados complexos usando esta linguagem.

3. Os documentos XML podem seguir uma estrutura pré-definida de maneira que o seu conteúdo possa ser validado. Esta estrutura é chamada de schema (XML Schemas) e existem ferramentas no Framework .NET para a comparação dos documentos com os schemas. Os arquivos de schema possuem a extensão XSD.

4. Por causa de sua flexibilidade e suas facilidades, com a linguagem XML e os documentos que são geradas usando-a, outras aplicações podem ser criadas. Com esta linguagem podem ser criados documentos para armazenamento de configurações de documentos, arquivos para compor a interface de aplicações, tal qual é feito com a linguagem XML e assim por diante.

Existem muitas características dessa linguagem, vejamos antes de continuar um típico documento XML com os elementos mais simples. A Listagem 1 mostra um documento XML bem simples.

Listagem 1. Exemplo de documento XML


  <?xml version="1.0" encoding="utf-8"?>
  <config>
    <software_name>XmlGrid</software_name>
    <software_category>Windows Application</software_category>
    <platform>.Net Framework v. 4.0</platform>
    <author>Vladimir Rech</author>
    <date>09/06/2012</date>
  </config>

Observe que para cada TAG de abertura existe uma fechando. Note também que existe um nível principal representado pela TAG <config>, assim, os demais nós estão aninhados, sendo que <config> representa o nó principal do documento.

As regras para formar corretamente um documento XML são bem simples:

• Para cada TAG de abertura deve haver uma fechando ou, se estiver vazia, deve aparecer na forma <config />, por exemplo.

• A linguagem XML é case sensitive, ou seja, as TAGS diferenciam maiúsculas de minúsculas.

• Não são permitidos espaços nas TAGS. Note que na TAG <software_name> foi usado o caractere underscore “_” para poder compor um nome mais significativo.

• O documento XML dá suporte para uso de páginas de código para suportar diferentes tipos de caractere. Note no documento de exemplo que na primeira linha está sendo definido o tipo de codificação que será usado no atributo “encoding=’utf-8’”. A definição de qual codificação utilizar garante que caracteres especiais possam ser utilizados (como os acentos da língua portuguesa) nos documentos XML.

Este documento tem outra característica importante, que é possuir apenas um nível. Todos os elementos estão aninhados na TAG <config>. É possível definir vários níveis de elementos no documento XML. Observe o arquivo da Listagem 2.

[Listagem 2. Documento XML com vários níveis


      1 <?xml version="1.0"?>
      2 <PedidoDeVenda xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      3                xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
      4                Empresa="2" 
      5                xmlns="http://www.contoso.org">
      6   <ID>9</ID>
      7   <Data>2010-01-26T00:00:00</Data>
      8   <Cliente ID="999">
      9     <Nome>Supermercados Fartura Ltda</Nome>
     10     <Telefone>41-9419-0987</Telefone>
     11     <Cidade>Curitiba</Cidade>
     12     <Estado>Paraná</Estado>
     13     <EMail>comercial@sfartura.com.br</EMail>
     14   </Cliente>
     15   <Valor>2034</Valor>
     16   <Desconto>34</Desconto>
     17   <Itens>
     18     <PedidoItens>
     19       <CodigoProduto>7</CodigoProduto>
     20       <DescricaoProduto>Castanha do Para</DescricaoProduto>
     21       <Quantidade>100</Quantidade>
     22       <Unitario>3.33</Unitario>
     23     </PedidoItens>
     24     <PedidoItens>
     25       <CodigoProduto>328</CodigoProduto>
     26       <DescricaoProduto>Frutas cristalizadas Feliz Natal</DescricaoProduto>
     27       <Quantidade>300</Quantidade>
     28       <Unitario>5.67</Unitario>
     29     </PedidoItens>
     30   </Itens>
     31 </PedidoDeVenda> ... 

Quer ler esse conteúdo completo? Tenha acesso completo