Manipulando um arquivo XML através de um ClientDataSet

esse é sensasional!

By: Rodrigo Leonhardt

Introdução

O uso de arquivos XML se torna cada dia mais comum, por oferecer um padrão capaz de trafegar entre ambientes heterogêneos, tornando a integração uma realidade em ambientes de soluções tecnologicamente diferentes entre si.

Transformando o arquivo XML

Uma vez de posse de um arquivo XML, é preciso manipulá-lo em meio à aplicação. Existem várias formas de realizar esse processo de manipulação, e entre elas está o uso do componente XMLTransformProvider.

Para exemplificar o uso do componente, será utilizado um arquivo XML de nome arquivo1.xml com o seguinte conteúdo:

<clientes>
  <cliente>
    <codigo>1</codigo>
    <nome>Cliente 1</nome>
    <telefone>1234-5678</telefone>
  </cliente>
  <cliente>
    <codigo>2</codigo>
    <nome>Cliente 2</nome>
    <telefone>9876-5432</telefone>
  </cliente>
</clientes>

Primeiramente um novo projeto deve ser criado, através do menu File>New>VCL Forms Application – Delphi for Win32.

Em seguida o arquivo XML deve ser mapeado através da ferramenta XML Mapper, que pode ser encontrada no menu Tools>XML Mapper.

Hide image
Click to see full-sized image

Imagem 1 – Interface do XML Mapper

Através do menu File>Open selecionando o arquivo1.xml será exibido do lado esquerdo da interface, a estrutura do arquivo XML com seus respectivos nós e atributos.

Ao clicar com o botão direito do mouse sobre as informações exibidas, selecione a opção Select All, para que todos os nós sejam considerados na transformação e exibidos na área central da interface, como exibido na Imagem 2 abaixo.

Hide image
img2

Imagem 2 – Menu exibido ao clique direito do mouse

Em seguida, através do menu Create>Datapacket from XML serão exibidas informações do lado direito da interface, referentes ao pacote de transformação XML criado com base no documento original.

Após isso, clique com o botão direito do mouse sobre a área central da interface, e selecione a opção Create Transformation do menu.

Por fim, clique no menu File>Save>Transformation para salvar o arquivo de transformação com o nome ToDp.xtr. O arquivo de transformação é um arquivo de conteúdo XML, que contém informações necessárias para que o arquivo original seja transformado em um DataPacket, que é um formato utilizado pelo Provider do Delphi para envio e recepção de dados.

Criando a interface

Visualizando o Form Designer, devem ser inclusos alguns componentes para manipulação e visualização dos dados originados do arquivo XML.

Inicialmente inclua o componente XMLTransformProvider da palheta Data Access. Altere a propriedade XMLDataFile para o caminho onde está o arquivo XML arquivo1.xml. Altere também a propriedade TransformRead>TransformationFile indicando o caminho onde está o arquivo de transformação ToDp.xtr.

Em seguida inclua o componente ClientDataSet da palheta Data Access. Altere a propriedade ProviderName indicando o componente XMLTransformProvider criado anteriormente. Altere também a propriedade Active para True.

Depois inclua o componente DataSource da palheta Data Access. Altere a propriedade DataSet indicando o ClientDataSet criado anteriormente.

Finalmente inclua o componente DBGrid da palheta Data Controls. Altere a propriedade DataSource indicando o componente DataSource criado anteriormente.

Ao final desses passos, o resultado visual será o exibido na Figura 3 abaixo.

Hide image
Click to see full-sized image

Imagem 3 – Resultado visual final

Conclusão

Com a utilização do componente XMLTransformProvider, o arquivo XML pode ser transformado para uma outra estrutura desejada, e convertida para o formato DataPacket, que pode ser utilizado em conjunto com o ClientDataSet para manipular os dados como se estivessem em uma tabela de um banco de dados.

Além do apresentado, também é possível gerenciar os dados na ferramenta XML Mapper, como mudar o nome dos atributos, definir a dimensão dos dados, omitir atributos, e outras funcionalidades.

retirado: http://edn.embarcadero.com/article/37321

3 ideias sobre “Manipulando um arquivo XML através de um ClientDataSet

  1. Cleiton Lara

    Boa tarde,

    Estou utilizando esse método para ler uma nota Nfe em xml, sendo que o mesmo possui 8 produtos, porem o arquivo esta me retornando apenas uma linha. Como faço para ver todos os produtos ?

    Resposta
    1. soprogramando Autor do post

      Creio que seja a forma como foi feito o mapeamento do XML,
      recomendo que você carrega apenas as tags referentes aos itens apos fazer isso carregue o ClientDataset e use uma instrução While para ler todos os campos da tabela.

      Resposta

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s