Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
fbnois Membro Junior
![Membro Junior Membro Junior](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/star3.gif)
![](images/avatars/117051150c64a368a.gif)
Registrado: Quinta-Feira, 10 de Abril de 2008 Mensagens: 364 Localização: Na frente do Computador
|
Enviada: Sáb Ago 06, 2011 10:51 am Assunto: Ler XML[Resolvido] |
|
|
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 |
|
![](templates/subSilver/images/spacer.gif) |
joaom16 Novato
![Novato Novato](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/star1.gif)
Registrado: Quinta-Feira, 20 de Janeiro de 2011 Mensagens: 83
|
Enviada: Sáb Ago 06, 2011 11:10 am Assunto: |
|
|
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 |
|
![](templates/subSilver/images/spacer.gif) |
fbnois Membro Junior
![Membro Junior Membro Junior](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/star3.gif)
![](images/avatars/117051150c64a368a.gif)
Registrado: Quinta-Feira, 10 de Abril de 2008 Mensagens: 364 Localização: Na frente do Computador
|
Enviada: Sáb Ago 06, 2011 11:16 am Assunto: |
|
|
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 |
|
![](templates/subSilver/images/spacer.gif) |
imex Moderador
![Moderador Moderador](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/moderador.gif)
Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Sáb Ago 06, 2011 12:14 pm Assunto: |
|
|
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 |
|
![](templates/subSilver/images/spacer.gif) |
fbnois Membro Junior
![Membro Junior Membro Junior](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/star3.gif)
![](images/avatars/117051150c64a368a.gif)
Registrado: Quinta-Feira, 10 de Abril de 2008 Mensagens: 364 Localização: Na frente do Computador
|
Enviada: Qua Ago 10, 2011 12:04 pm Assunto: |
|
|
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 |
|
![](templates/subSilver/images/spacer.gif) |
fbnois Membro Junior
![Membro Junior Membro Junior](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/star3.gif)
![](images/avatars/117051150c64a368a.gif)
Registrado: Quinta-Feira, 10 de Abril de 2008 Mensagens: 364 Localização: Na frente do Computador
|
Enviada: Qua Ago 10, 2011 2:16 pm Assunto: |
|
|
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 |
|
![](templates/subSilver/images/spacer.gif) |
|