Fórum Dificuldades em ler o xml #418397

13/06/2012

0

Bom dia a todos

Utilizando o Delphi 7 estou tentando ler o xml. Porém conforme podem ver no exemplo a baixo, tem 8 eventos que estou conseguindo fazer a leitura de todos normalmente. Acontece que depois de ler cada evento preciso testar para saber se tem mais. É neste ponto que estou com dificuldades. Alguém pode me ajudar?

<?xml version=1.0 encoding=ISO-8859-1?>
 -<sroxml> 
  <versao>1.0</versao> 
  <qtd>1</qtd> 
  <TipoPesquisa>Lista de Objetos</TipoPesquisa> 
  <TipoResultado>Todos os eventos</TipoResultado> 
  -<objeto> 
   <numero>XQ262345673BR</numero> 
   +<evento> 
   +<evento> 
   +<evento> 
   +<evento> 
   +<evento>
   +<evento> 
   +<evento> 
   -<evento> 
    <tipo>PO</tipo> 
    <status>01</status> 
    <data>05/06/2012</data> 
    <hora>07:00</hora> 
    <descricao>Postado</descricao> 
    <local>ACF BONTEMPO</local> 
    <codigo>06763970</codigo> 
    <cidade>TABOAO DA SERRA</cidade> 
    <uf>SP</uf> 
    <sto>72907304</sto> 
   </evento> 
  </objeto> 
</sroxml>

Ureis

Ureis

Responder

Posts

13/06/2012

Ureis

Obrigado pela ajuda amigo, mas não utilizo clientdataset.
O código esta igual ao colocado a baixo.
preciso fazer um teste no while para saber se tem mais items no evento para pegar.

   xmlRetorno := Getsroxml(xmlDocument1);
   iSeq := 0;
   sTipoPesquisa     := xmlRetorno.TipoPesquisa;
   sTipoResultado    := xmlRetorno.TipoResultado;
   sNumero           := xmlRetorno.Objeto.Numero;

   while ? do
   begin

      sTipo             := xmlRetorno.Objeto.Evento.Items[iSeq].Tipo;
      sStatus           := IntToStr(xmlRetorno.Objeto.Evento.Items[iSeq].Status);
      sData             := xmlRetorno.Objeto.Evento.Items[iSeq].Data;
      sHora             := xmlRetorno.Objeto.Evento.Items[iSeq].Hora;
      sDescricao        := xmlRetorno.Objeto.Evento.Items[iSeq].Descricao;
      sRecebedor        := xmlRetorno.Objeto.Evento.Items[iSeq].Recebedor;
      sDocumento        := xmlRetorno.Objeto.Evento.Items[iSeq].Documento;
      sComentario       := xmlRetorno.Objeto.Evento.Items[iSeq].Comentario;
      sLocal            := xmlRetorno.Objeto.Evento.Items[iSeq].Local;
      sCodigo           := IntToStr(xmlRetorno.Objeto.Evento.Items[iSeq].Codigo);
      sCidade           := xmlRetorno.Objeto.Evento.Items[iSeq].Cidade;
      sUF               := xmlRetorno.Objeto.Evento.Items[iSeq].Uf;
      sSto              := IntToStr(xmlRetorno.Objeto.Evento.Items[iSeq].Sto);
      sDestLocal        := xmlRetorno.Objeto.Evento.Items[iSeq].Destino.Local;
      sDestCodigo       := IntToStr(xmlRetorno.Objeto.Evento.Items[iSeq].Destino.Codigo);
      sDestCidade       := xmlRetorno.Objeto.Evento.Items[iSeq].Destino.Cidade;
      sDestBairro       := xmlRetorno.Objeto.Evento.Items[iSeq].Destino.Bairro;
      sDestUF           := xmlRetorno.Objeto.Evento.Items[iSeq].Destino.Uf;
      
      iSeq := iSeq + 1;
   end;


obrigado.
Responder

Gostei + 0

14/06/2012

Ureis

Resolvido.

Utilizei um contador.
ex.: iTotIndex := xmlRetorno.Objeto.Evento.Count;
Responder

Gostei + 0

14/06/2012

Wesley Yamazack

Olá UREIS, obrigado por partilhar a solução com o pessoal!!!

Sucesso pra ti e bons códigos!!!

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