Atenção: esse artigo tem um vídeo complementar. Clique e assista!

Do que trata o artigo

O artigo descreve técnicas básicas para ler e criar documentos XML que são a base para várias das aplicações modernas, conectadas ou não. Através de exemplos práticos será possível iniciar o uso e entendimento destes documentos com o framework .net.

Para que serve

Documentos XML são usados em um número enorme de aplicações. Seu objetivo principal é a troca de dados entre aplicações on line ou não, mas vários outros usos surgiram com o passar do tempo, sendo hoje usados para armazenar dados de aplicativos como o Office 2007 em diante e também parâmetros de configuração. Logo, ter um início da compreensão do uso destes arquivos e de como escrever e ler nestes de forma objetiva acelera o início do uso destes documentos nos trabalhos do dia a dia.

Em que situação o tema é útil

Sempre que se precisar ler ou escrever documentos XML, este artigo poderá ser usado como um ponto de partida para a execução das tarefas. Como as tarefas serão expostas em classes separadas, estas poderão ser usadas posteriormente em outros projetos e ter suas funcionalidades expandidas. Os documentos XML têm um número grande de aplicações sendo a base para os Webservices e também para a plataforma WPF da Microsoft que usa uma variação desta linguagem para montar interfaces com o usuário mais aprimoradas.

Resumo do DevMan

O armazenamento dos dados gerados e gerenciados pelos programas de computador sempre foi um grande problema. Inicialmente, todos estes dados eram armazenados em arquivos binários sendo necessária a utilização de programas específicos para ler o seu conteúdo.

Com a chegada do sistema UNIX, procurou-se fazer tudo usando documentos de texto o que realmente simplificou boa parte dos trabalhos. Entretanto, quando se deseja expressar os dados seguindo uma estrutura que facilite a compreensão tanto dos dados armazenados como informações sobre estes dados – o que é chamado de “metadados” – sempre havia uma lacuna a ser preenchida. Os documentos XML são revolucionários pois permitem tanto armazenar os dados de maneira estruturada como permitem que qualquer pessoa compreenda os dados que estão guardados ao ver sua estrutura. Estes tipos de documentos são armazenados em arquivos de texto puro, logo, têm caminho livre pelas redes e podem ser visualizados com programas bem simples. Mas sua manipulação requer conhecimentos avançados tanto de programação como de criação de interfaces. O artigo procura colocar os primeiros elementos que devem ser conhecidos pelo programador que deseja aprender a usar esta tecnologia.

O framework .net é especialmente preparado para trabalhar com XML, mas a grande quantidade de recursos pode fazer com que o programador mais novato fique intimidado. Para resolver este problema, este artigo mostra algumas das formas mais básicas de executar o trabalho com o XML e também um exemplo bem simples e prático.

O armazenamento de dados e troca destes entre os programas sempre causou dificuldades para os programadores. Ocorre que ao fazer este armazenamento e também o intercâmbio entre programas diferentes é necessário que além dos dados sejam passadas informações sobre a forma que estes estão estruturados e a sua hierarquia. Isto é o que se chama de “metadados” ou usando uma pequena paródia “dados sobre os dados”. A ideia parece simples para programar, mas não é. Como enviar, juntamente com os documentos, a informação sobre a sua estrutura?

O sistema operacional UNIX procurou fazer isto bem feito usando os arquivos de texto que, sob o ponto de vista de segurança da rede e compatibilidade com outros programas são quase inofensivos, mas têm limitações quando se pretende descrever sua estrutura.

Geralmente, quando se usa arquivos de texto puro, precisa-se conhecer o layout dos dados ali armazenados e isto normalmente é feito usando-se arquivos com a estrutura em separado, o que complica as tarefas. Caso se opte por enviar a estrutura junto com os dados, precisa-se de pelo menos mais um documento indicando em que parte do arquivo começa a estrutura e onde começam os dados. Arquivos binários fazem o mesmo gravando geralmente num cabeçalho a estrutura dos dados e em seguida os dados. Mas existe a questão da segurança.

Num cenário ideal, seria necessário que um documento já descrevesse sua estrutura diretamente com os dados e se isto pudesse ser feito usando arquivos de texto, que possam ser compreendidos por qualquer pessoa que leia este arquivo, seria perfeito.

O desenvolvimento das tecnologias de rede e posteriormente a Internet potencializou a troca de dados entre computadores remotos. Uma das primeiras criações que permitiu estruturar os dados e formatá-los para exibição foi a linguagem HTML que usa marcadores (TAGS) para formatar e estruturar os documentos. Documentos HTML são compostos de texto puro, embora ultimamente vários dados binários venham se incorporando. Mas a essência é texto mesmo.

Como evolução natural surgiu em meados do final da década de 1990 um novo formato de documento, o XML. XML é uma sigla para o termo em inglês “eXtensible Markup Language” ou, Linguagem de Marcação Extensível e são o foco dos próximos tópicos.

Documentos XML

Documentos XML são arquivos criados com uma linguagem de marcação baseada em TAGS muito parecida com a linguagem HTML.

As principais diferenças são:

1. Documentos XML são hierárquicos. Cada elemento pode ter elementos filhos, mas devem ser rigidamente estruturados;

2. Documentos XML são "case sensitive" quanto a nomenclatura das TAGS;

3. Todo elemento deve ter uma TAG de abertura e de fechamento;

4. As TAGS podem ter atributos.

O documento da Listagem 1 mostra um XML mais básico onde, na primeira linha é feita a declaração da versão da linguagem XML que está sendo usada. Isto embora não seja mandatório, facilita ao programa que fará a leitura executar sua tarefa. A TAG de definição da linguagem possui um sinal de interrogação “?” e dois atributos. Entretanto, mais atributos podem ser acrescentados como o indicador do "namespace" e o arquivo de "schema" no qual o documento XML se baseou.

Nota do DevMan

Documentos XML geralmente possuem um indicador do "namespace" para que seu conteúdo seja validado. Geralmente, trata-se de um endereço no formato URL para outro documento onde constam as regras para validação do documento. Já um arquivo de “schema” contém a estrutura do XML indicando quais são as TAGS que o documento pode ter e também o conteúdo que será permitido. Este arquivo é identificado pela extensão “XSD”.

Continuando na análise do documento XML da listagem, o conteúdo inicia-se na TAG “<contato>”. Esta contém outros elementos aninhados. Note que cada elemento deve possuir uma TAG de abertura e de fechamento correspondente. O elemento “<contato>” é fechado na linha 9.

Listagem 1. Documento XML básico


1 <?xml version="1.0" encoding="utf-8" ?>
2 <contato>
3   <nome>Jose Ferreira</nome>
4   <telefone>4444-3322</telefone>
5   <celular>9876-2334</celular>
6   <email>joseferreira@hotmail.com</email>
7   <dataNascimento>8/3/1975</dataNascimento>
8   <outros>Twitter: @joseferreira</outros>
9 </contato>

Um documento XML pode ter vários elementos do mesmo tipo como a Listagem 2 demonstra. Este documento é um pouco mais complexo e demonstra uma aplicação muito próxima do mundo real para um documento XML. A listagem expressa um pedido de compra com a identificação do emitente e também os produtos que fazem parte do produto.

A linha 2 abre o elemento principal que é o pedido propriamente dito. Nesta TAG existe um atributo indicando o número do pedido. Os atributos são como elementos auxiliares para conterem dados sobre a TAG. O elemento “<itens>” é usado para aninhar os produtos do pedido. Cada item é composto por um elemento do tipo “<produto>”. Note que este elemento (que se inicia na linha 8) possui ele próprio um atributo, mais elementos e um elemento filho denominado “<tributacao>”.

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


      1 <?xml version="1.0" encoding="utf-8" ?>
      2 <pedido id="2332">
      3   <data>23/11/2010</data>
      4   <empresa>Alimentos Naturais Ltda</empresa>
      5   <prazo>30</prazo>
      6   <desconto>30,00</desconto>
      7   <itens>
      8     <produto id="1">
      9       <descricao>Sal marinho iodado</descricao>
     10       <quantidade>1000</quantidade>
     11       <unidade>KG</unidade>
     12       <unitario>3,50</unitario>
     13       <tributacao>
     14         <icms>
     15           <aliquota>12</aliquota>
     16           <cf>000</cf>
     17         </icms>
     18       </tributacao>
     19     </produto>
     20     <produto id="1003">
     21       <descricao>Tomate organico seco</descricao>
     22       <quantidade>3500</quantidade>
     23       <unidade>KG</unidade>
     24       <unitario>15</unitario>
     25       <tributacao>
     26         <icms>
     27           <aliquota>12</aliquota>
     28           <cf>000</cf>
     29         </icms>
     30       </tributacao>
     31     </produto>
     32     <produto id="3020">
     33       <descricao>Molho Shoyu</descricao>
     34       <quantidade>500</quantidade>
     35       <unidade>Garrafa</unidade>
     36       <unitario>4,38</unitario>
     37       <tributacao>
     38         <icms>
     39           <aliquota>12</aliquota>
     40           <cf>000</cf>
     41         </icms>
     42       </tributacao>
     43     </produto>
     44   </itens>
     45 </pedido> ... 

Quer ler esse conteúdo completo? Tenha acesso completo