GARANTIR DESCONTO

Fórum Ler aquivo XML sequêncialmente #356427

02/04/2008

0

Colegas;

Tenho o seguinte arquivo XML:

<?xml version="1.0" standalone="yes"?>
<DataSetUsuarios>
  <TABLE>
<CODIGO>1</CODIGO>
<NOME>USUARIO 1</NOME>
  </TABLE>
  <TABLE>
<CODIGO>2</CODIGO>
<NOME>USUARIO 2</NOME>
  </TABLE>
</DataSetUsuarios>


Como eu faço para navegar através das tags TABLE, de modo que eu possa pegar de forma sequêncial os dados dos usuários?


Vispo

Vispo

Responder

Posts

02/04/2008

Fabiano Góes

Bom cara, você pode tratar este xml como um dataset ai navegar como se estive em uma tabela de banco de dados:

no Delphi
menu -> Tools -> Xml Mapper.

no Xml Mapper
- File -> Open, carregue o seu xml.
- botão direto no Node Table e selecione: Select All Children.
- botão direto no Node Table e selecione: Create Datapacket from Xml.
- na area central selecione o groupbox: Datapacket to Xml e clique em Create and Test Transformation.
- File -> Save -> Transformation, e salve o arquivo .xtr no mesmo diretorio do seu xml ex: [b:4357a0c185]DspToXml.xtr[/b:4357a0c185](este arquivo será usado para leitura)
- na area central selecione o groupbox: Xml to Datapacket e clique em Create and Test Transformation.
- File -> Save -> Transformation, e salve o arquivo .xtr no mesmo diretorio do seu xml ex: [b:4357a0c185]XmlToDsp.xtr[/b:4357a0c185](este arquivo será usado para escrita)

feito isso pode fechar o Xml Mapper e voltar ao Delphi.

no form coloque os componentes da aba Data Access:
XMLTransformProvider
a propriedade XmlDataFile: aponta para o seu xml
a propriedade TransformRead.TransformationFile aponta para o arquivo: [b:4357a0c185]DspToXml.xtr[/b:4357a0c185]
a propriedade TransformWrite.TransformationFile aponta para o arquivo: [b:4357a0c185]XmlToDsp.xtr[/b:4357a0c185]

ClientDataSet(com a propriedade ProviderName setada para o XMLTransformProvider)

beleza agora você pode tratar o ClientDataSet como se estivesse em uma tabela de banco de dados

pra varrer os dados pode se usar um loop:
   ClientDataSet.First;
   While not ClientDataSet.Eof do
   begin
      // aqui você faz o que precisar com os dados      
      ClientDataSet.Next;
   end;


você pode até conectar um DataSource ao ClientDataSet e com uma DBGrid Vizualizar os dados.
em fim, pode ser tratado como um Dataset.
se precisar inserir/editar os dados para salvar use: ClientDataSet.SaveToFile(´SeuXml.xml´);

se entendi bem a sua necessidade isso deve resolver,
qualquer coisa estou a disposição.
um abraço!!!


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar