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.

Resumo Devman

Primeiros passos com documentos XML - Manipulando documentos XML no C#: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 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 />(damesma 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/>, porexemplo.
  • 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 . É 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