ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Ler XML[Resolvido]

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
fbnois
Membro Junior
Membro Junior


Registrado: Quinta-Feira, 10 de Abril de 2008
Mensagens: 364
Localização: Na frente do Computador

MensagemEnviada: Sáb Ago 06, 2011 10:51 am    Assunto: Ler XML[Resolvido] Responder com Citação

Recebi um formato de arquivo XML w tenho a incubencia de transforma-lo em formato que o sistema da minha empresa possa importar, bem, eu não tenho muita pratica com XML consegui ler o arquivo usando XMLDocument, porém, em um mesmo arquivo XML veêm variso registros e no caso eu só consigo ler um registro como eu posso fazer para ler todos os registro deste XML segue abaixo exemplo da estrutura do arquivo:

Código:
<xml>
<notas>
   <nota>
      <numero>111</numero>
      <mes>8</mes>
      <cidade>MIRASSOL D´OESTE</cidade>
      <uf>MT</uf><exercicio>2011</exercicio>
      <data>2011-08-11</data>
      <valor>273.00</valor>
      <atividade>MANUTENCAO INFORMATICA</atividade>
   </nota>
   <nota>
      <numero>112</numero>
      <mes>8</mes>
      <cidade>MIRASSOL D´OESTE</cidade>
      <uf>MT</uf>
      <data>2011-08-01</data>
      <valor>545.00</valor>
      <atividade>MANUTENCAO INFORMATICA</atividade>
   </nota>
</notas>


Editado pela última vez por fbnois em Qua Ago 10, 2011 2:17 pm, num total de 2 vezes
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
joaom16
Novato
Novato


Registrado: Quinta-Feira, 20 de Janeiro de 2011
Mensagens: 83

MensagemEnviada: Sáb Ago 06, 2011 11:10 am    Assunto: Responder com Citação

Acho que isto daqui pode ser util:

Código:

{adicione um XMLDocument(Aba Internet) e no botão de ler ou sei la adiciona isto}
var
   Node : IXMLNode;
begin
XMLDocument1.Filename := 'CAMINHO';
   Node :=XMLDocument1.DocumentElement.ChildNodes.FindNode('nota');
   if (node <> nil) then
   begin
      ListBox1.Items.Add('Numero.....: ' + Node.ChildNodes['numero'].Text);
      ListBox1.Items.Add('Mes....: ' + Node.ChildNodes['mes'].Text);
      ListBox1.Items.Add('Cidade....: ' + Node.ChildNodes['cidade'].Text);
      ListBox1.Items.Add('UF....: ' + Node.ChildNodes['uf'].Text);
      ListBox1.Items.Add('Exercicio.... ' + Node.ChildNodes['exercicio'].Text);
      ListBox1.Items.Add('data: ' + Node.ChildNodes['data'].Text);
      ListBox1.Items.Add('Valor: ' + Node.ChildNodes['valor'].Text);
      ListBox1.Items.Add('Atividade: ' + Node.ChildNodes['atividade'].Text);
   end;
end;
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
fbnois
Membro Junior
Membro Junior


Registrado: Quinta-Feira, 10 de Abril de 2008
Mensagens: 364
Localização: Na frente do Computador

MensagemEnviada: Sáb Ago 06, 2011 11:16 am    Assunto: Responder com Citação

joaom16 escreveu:
Acho que isto daqui pode ser util:

Código:

{adicione um XMLDocument(Aba Internet) e no botão de ler ou sei la adiciona isto}
var
   Node : IXMLNode;
begin
XMLDocument1.Filename := 'CAMINHO';
   Node :=XMLDocument1.DocumentElement.ChildNodes.FindNode('nota');
   if (node <> nil) then
   begin
      ListBox1.Items.Add('Numero.....: ' + Node.ChildNodes['numero'].Text);
      ListBox1.Items.Add('Mes....: ' + Node.ChildNodes['mes'].Text);
      ListBox1.Items.Add('Cidade....: ' + Node.ChildNodes['cidade'].Text);
      ListBox1.Items.Add('UF....: ' + Node.ChildNodes['uf'].Text);
      ListBox1.Items.Add('Exercicio.... ' + Node.ChildNodes['exercicio'].Text);
      ListBox1.Items.Add('data: ' + Node.ChildNodes['data'].Text);
      ListBox1.Items.Add('Valor: ' + Node.ChildNodes['valor'].Text);
      ListBox1.Items.Add('Atividade: ' + Node.ChildNodes['atividade'].Text);
   end;
end;


Otimo irmão isso eu ja fiz mas note que ele no caso tem duas "notas" e nesse caso q vc me sugeriu e que eu ja usei ele só lê o primeiro eu queria percorrer todo o arquivo, como eu faço isso?!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Sáb Ago 06, 2011 12:14 pm    Assunto: Responder com Citação

Experimente mais ou menos desta forma:

Código:
var
  //...
  NodeNotas: IXMLNode;
  NodeNota: IXMLNode;
  i: integer;
  //...
begin
//...
NodeNotas := XMLDocument1.ChildNodes.FindNode('notas');
if NodeNotas <> nil then
    begin
    for i := 0 to NodeNotas.ChildNodes.Count - 1 do
        begin
        NodeNota := NodeNotas.ChildNodes[i];
        //...
        end;
    end;
//...
end;


Espero que seja útil.


Editado pela última vez por imex em Ter Out 17, 2023 12:10 pm, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
fbnois
Membro Junior
Membro Junior


Registrado: Quinta-Feira, 10 de Abril de 2008
Mensagens: 364
Localização: Na frente do Computador

MensagemEnviada: Qua Ago 10, 2011 12:04 pm    Assunto: Responder com Citação

imex escreveu:
Experimente mais ou menos desta forma:

Código:
var
  //...
  NodeNotas: IXMLNode;
  NodeNota: IXMLNode;
  i: integer;
  //...
begin
//...
NodeNotas := XMLDocument1.ChildNodes.FindNode('notas');
if NodeNotas <> nil then
    begin
    for i := 0 to NodeNotas.ChildNodes.Count - 1 do
        begin
        NodeNota := NodeNotas.ChildNodes[i];
        //...
        end;
    end;
//...
end;


Espero que seja útil.


Cara até deu certo porém ele lê sempre os dados do mesmo nó. como eu faço pra resolver isso?
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
fbnois
Membro Junior
Membro Junior


Registrado: Quinta-Feira, 10 de Abril de 2008
Mensagens: 364
Localização: Na frente do Computador

MensagemEnviada: Qua Ago 10, 2011 2:16 pm    Assunto: Responder com Citação

Vlw gente juntando os código com mais atenção tudo se iluminou, segue o código abaixo:

Código:

var
  NodeCount, Node : IXMLNode;
  Numero : string;
  i : integer;
begin

  //lendo arquivo xml
  NodeCount := XMLDocument.ChildNodes.FindNode('notas');
  ListBox1.Items.Add('Números de notas: '+IntToStr(NodeCount.ChildNodes.Count));
  for i := 0 to NodeCount.ChildNodes.Count - 1 do
  begin
    Node := NodeCount.ChildNodes[i];
    if Node <> nil then
    begin
      ListBox1.Items.Add('Número.....: ' + Node.ChildNodes['numero'].Text);
      ListBox1.Items.Add('Mes....: ' + Node.ChildNodes['mes'].Text);
      ListBox1.Items.Add('Cidade....: ' + Node.ChildNodes['cidade'].Text);
      ListBox1.Items.Add('UF....: ' + Node.ChildNodes['uf'].Text);
      ListBox1.Items.Add('Exercicio.... ' + Node.ChildNodes['exercicio'].Text);
      ListBox1.Items.Add('data: ' + Node.ChildNodes['data'].Text);
      ListBox1.Items.Add('Valor: ' + Node.ChildNodes['valor'].Text);
      ListBox1.Items.Add('Atividade: ' + Node.ChildNodes['atividade'].Text);
    end;
  end;
end;


Vlw mesmo galera!!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB