XML com Delphi, lendo e escrevendo

Olá a todos os geeks, hoje vamos falar um pouco sobre como ler e escrever em arquivos XML usando o Delphi, mas você sabe o que é XML?

Download do Código Fonte

O que é XML?

Curta a nossa página no Facebook:

XML, ou eXtensible Markup Language (Linguagem de marcação extensiva) é uma linguagem de marcação parecida com HTML usada para criação de documentos organizados hierarquicamente de texto, banco de dados, etc.. Esta linguagem é muito usada para a transferência de dados entre sistemas diferentes, principalmente no meio comercial e em sistemas financeiros, e é recomendada pela W3C para a comunicação entre aplicações WEB.

Lendo e escrevendo em arquivos XML com Delphi

Layout

1 – Para começar, com o Delphi aberto clique em File, no menu principal, depois em New >> VCL Forms Application – Delphi for Win32.
2 – Renomeio o Form conforme sua preferência salve a Unit e o projeto também com nomes a seu gosto, em uma pasta chamada projetoXML, na mesma pasta crie um arquivo com extensão .xml, usando um editor de texto de sua preferência, e salve-o em branco com o nome dados;
3 – De volta ao Delphi adicione dois elementos ao form, um Panel alinhado alTop, e um PageControl alinhado alClient, que deve ser renomeado para paginas.
4 – Adicione quatro BitBtn ao Panel, mude as propriedades Name e Caption deles para: btnCarregar, Carregar Arquivo (Bitbtn1), btnAdd, Adicionar Item(Bitbtn2), btnEditar, Editar Item(Bitbtn3), btnExcluir, Excluir Item(Bitbtn4). Os botões Adicionar Item, Editar Item e Excluir Item devem ter a propriedade Enable alterada para false;
5 – Adicione duas páginas no PageControl, clicando com o botão direito do mouse >> New Page. Edite as propriedades Name e Caption das páginas, um com TabListar e Listar, respectivamente, e outra com tabcadastro e Novo Cadastro.
6 – Dentro da página Listar coloque um componente DBGrid com a propriedade Align em alClient. Adicione também o nosso grande amigo ClientDataSet e um DataSource. O layout do programa deve ficar conforme está na figura 01;

Figura 01

Figura 01

7 – Ligue o DataSource ao ClientDataSet eo DBGrid ao DataSource;
8 – Na página Novo Cadastro Crie um formulário com dois Edits, que devem ter nomes de edtEstado e edtUF. Adicione dois Bitbtn, que devem ter as propriedades Name e Caption alteradas para: btnCancelar, Cancelar, e btnSalvar, Salvar. veja a figura 02;

Figura 02

Figura 02

Eventos dos botões

1 – No evento onClick do botão Carregar Arquivo cole este código:

Que na linha 1 faz a conexão do ClientDataSet com o arquivo XML, que deve estar na mesma pasta do projeto. E nas outras linha ele Habilita o uso dos botões restantes;
2 – No botão Adicionar Item, no evento onClick, coloque o seguinte código:

Que na linha 1 faz a mudança da página de listagem para a página de cadastro, e nas linhas seguintes desabilita todos os botões do panel;
3 – No botão Editar, a única coisa que faremos é colocar o ClientDataSet em modo de edição, e a edição deverá acontecer na própria DBgrid, sem a necessidade um formulário. Use o código a seguir no evento onClick do botão Editar:

4 – No evento Onclik do botão excluir faremos apenas a exclusão do item do ClientDataSet e salvaremos o arquivo XML com a nova alteração, cole o seguinte código:

5 – No evento OnExit da DBGrid coloque o seguinte código:

6 – Agora na aba de cadastro, os botões Cancelar e Salvar terão os seguintes códigos:

Pronto, agora compile o código e faça o teste, se não funcionar você pode baixá-lo. Qualquer dúvida deixe um comentário.

Download do Código Fonte
Curta a nossa página no Facebook:

Sobre o autor:

Graduado em Análise e Desenvolvimento de Sistemas - FLS; Desenvolvedor Full-stack na UniLeão; Revisor de conteúdo do site Clube dos Geeks, católico, gosto de ler e escrever.

Postagens relacionadas:

18 respostas

  1. Lyandro

    Gostaria de saber se eu lhe enviar um fonte em delphi e um xml tem como vc me ajudar na leitura que n”ao esta dando certo.

    Obrigado.

    Responder
  2. Ricardo

    Amigo estou em grande apuros em um emprego novo to batendo muito a cabeça para criar um web service com o delphi você poderia criar um post com um exemplo? desde já agradeço

    Responder
  3. Wellington Telles

    Muito bom, achei interessante o resultante do XML, só faltou o “Line Break” que ainda estou estudando, pois tudo em uma única linha não é muito visual, mesmo com “Line Break” que usei com Notepad++, o programa carrega o arquivo e isso é muito legal. Na hora de salvar ele volta ao formato inicial.

    Se alguém precisar do código fonte só falar

    Responder
  4. Wellington Telles

    Boa Tarde,

    Acrescentei essa função para que o XML tenha identação e fique em várias linhas:

    Procedure FormatXMLFile(XmlFile:string);
    var
    oXml : TXMLDocument;
    s : utf8String;
    begin
    oXml := TXMLDocument.Create(nil);
    try
    oXml.LoadFromFile(XmlFile);
    s := oxml.XML.Text;
    s := StringReplace(s, ‘>’ + #13#10 + ‘<' , [rfReplaceAll]);
    //oXml.XML.Text:=xmlDoc.FormatXMLData(oxml.XML.Text);
    oxml.XML.Text := s;
    oXml.Active := true;
    oXml.SaveToFile(XmlFile);
    finally
    oXml := nil;
    end;
    end;

    Depois no programa:
    Após :

    ClientDataSet1.SaveToFile('dados.xml',dfXML);
    FormatXMLFile('dados.xml');

    Responder
  5. Emerson Luis Alves de Moraes

    Boa tarde, muito bom esse exemplo que você fez de como usar o XML.
    Teria Como adicionar um sistema de pesquisa neste mesmo exemplo que você fez?

    Responder

Deixe uma resposta

Seu e-mail não será publicado.