Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

marcosesser

Ler arquivo XML no delphi

Recommended Posts

Bom dia, estou com um problema e gostaria de saber se podem me ajudar,

sou iniciante em Delphi e estou tentando desenvolver uma aplicação que leia determinadas tags de um arquivo xml, a tag é a <chNFe> e o arquivo que eu quero ler é o seguinte:

 

<retConsNFeDest xmlns="http://www.portalfiscal.inf.br/nfe" versao="1.01">
	<tpAmb>1</tpAmb>
	<verAplic>1.1.1</verAplic>
	<cStat>138</cStat>
	<xMotivo>Documento localizado para o destinatario</xMotivo>
	<dhResp>2017-03-20T17:40:12</dhResp>
	<indCont>1</indCont>
	<ultNSU>20691137709</ultNSU>
		<ret>
			<resNFe NSU="20690776764">
				<chNFe>41170376125244000162550070010199011009987875</chNFe>
				<CNPJ>76125244000162</CNPJ>
				<xNome>MOINHO ARAPONGAS S/A</xNome>
				<IE>6280220629</IE>
				<dEmi>2017-03-06</dEmi>
				<tpNF>1</tpNF>
				<vNF>89.60</vNF>
				<digVal>2RshQue3OqwQa3w66e7L7VMip/o=</digVal>
				<dhRecbto>2017-03-06T14:46:15</dhRecbto>
				<cSitNFe>1</cSitNFe>
				<cSitConf>4</cSitConf>
			</resNFe>
		</ret>
		<ret>
			<resNFe NSU="20690776808">
				<chNFe>41170376125244000162550070010199021007131377</chNFe>
				<CNPJ>76125244000162</CNPJ>
				<xNome>MOINHO ARAPONGAS S/A</xNome>
				<IE>6280220629</IE>
				<dEmi>2017-03-06</dEmi>
				<tpNF>1</tpNF>
				<vNF>110.85</vNF>
				<digVal>bYOSFXKE79okxtepvod/qG4saZE=</digVal>
				<dhRecbto>2017-03-06T14:46:15</dhRecbto>
				<cSitNFe>1</cSitNFe>
				<cSitConf>4</cSitConf>
			</resNFe>
		</ret>
		<ret>
			<resNFe NSU="20690776826">
				<chNFe>41170376125244000162550070010199031006464116</chNFe>
				<CNPJ>76125244000162</CNPJ>
				<xNome>MOINHO ARAPONGAS S/A</xNome>
				<IE>6280220629</IE>
				<dEmi>2017-03-06</dEmi>
				<tpNF>1</tpNF>
				<vNF>1366.38</vNF>
				<digVal>A6gHWT8RCSMVJXcWV9G0w0eTzZw=</digVal>
				<dhRecbto>2017-03-06T14:46:15</dhRecbto>
				<cSitNFe>1</cSitNFe>
				<cSitConf>4</cSitConf>
			</resNFe>
		</ret>
</retConsNFeDest>

já li algumas coisas sobre o TXMLDocument no delphi, mas não sei bem como utilizar, eu utilizei um modelo que encontrei mas ele pega apenas a primeira ocorrência da tag.

 

Desde já obrigado.

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá marcosesser boa tarde,

 

Bom existem várias formas de obter o valor das tag's de um XML, mas ai vai uma:

 

Bom não sei se é exatamente oque você precisa, mas fiz o seguinte código onde você informa o XML em um memo e a tag que deseja buscar em um edit ou variável e a clica no botão que irá extrair em outro memo os valores da tag procurada.

 

unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Memo2: TMemo;
    edtTag: TEdit;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  I: Integer;
begin
  for I := 0 to Memo1.Lines.Count -1 do
    if pos(Trim(edtTag.Text), memo1.Lines[I]) > 0 then
      memo2.Lines.Add(StringReplace(copy(memo1.Lines[I], pos(Trim(edtTag.Text), memo1.Lines[I]), pos('</', memo1.Lines[I]) -1), Trim(edtTag.Text), EmptyStr, [rfReplaceAll]))

end;

end.

 

Espero ter ajudado, abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por xavierramalho
      Estamos com uma vaga para analista devops na TI da Totvs. Se você tem interesse, pode fazer a candidatura no link https://totvs.gupy.io/jobs/1028739 e fazer contato pelo e-mail filipe.ramalho@totvs.com.br
       
      Não precisa ter experiência específica com DevOps, mas precisa ser apaixonado por tecnologia, quanto mais nerd melhor! Temos tudo pra você aprender e profissionais muito experientes pra te ajudar. Só precisamos que você tenha muita vontade e dedicação!
    • Por Fernando30
      Olá pessoal,
       
      Sou gestor na área de tecnologia já faz alguns anos e, como a maioria do pessoal que está na área, sofro muito com a falta de mão de obra. Sofremos muito com qualidade de fornecedores, confiança na prestação de serviços, etc. Na área de desenvolvimento isso se intensifica bastante.
      A demanda cresce vertiginosamente e devido a essa escassez, os projetos de tecnologia acabam tendo atrasos e falta de qualidade.
       
      Atualmente existem algumas plataformas de freelancers no mercado, mas todas com muita burocracia e custos altos para os prestadores.
       
      A ideia surgiu dessa problemática:
      Aliar uma plataforma totalmente gratuita, desburocratizada e democrática em que todos tenham acesso a desenvolvimentos de tecnologia diretamente com os profissionais da área.
        
      http://www.code4seasons.com
       
      Vocês poderiam me dar um feedback do que acharam por favor ?
    • Por Cap
      Tenho uma dúvida, na minha tabelas existe 4 keys estrangeiras que ligam com uma tabela funcionarios onde tem o nome do funcionario, minha dúvida é que quero que retorno o nome de cada usuario, abaixo uma foto da minha tabela com o id de cada funcionário e a outra com o nome do funcionário. Quero que ela retorno uma tabela igual a a com os ids mas em vez deles com os nomes dos funcionarios.
    • Por DanielleN
      Boa tarde pessoal!
      Preciso de uma ajuda urgente.O contexto é o seguinte: Acabo de pegar toda uma estrutura pronta de integração, que se conecta ao repo Azure DevOps, cada commit dispara a execução com parâmetros automatizados em Jenkins.
      Tive um problema em um dos step e gostaria de ver os arquivos que estão gerando. Mas meu job está ligado a um master e não possui a opção de gerar os artefacts. Alguém poderia me dizer o que posso fazer? Como listar os arquivos que estão sendo gerados?
      Obrigada 
    • Por Mozelli
      Olá pessoal.
       
      Estou com o seguinte problema.
      Foi formatado o computador da empresa sem fazer o backup da base de dados do sistema que consiste em dois arquivos, segundo o proprietário do sistema informou: um arquivo .mdf e outro .ldf.
      Através de programas de recuperação de dados, consegui encontrar esses arquivos.
      Preciso recuperar esses dados. Há alguma maneira de eu abrir esses aquivos e tentar recuperar essa base de dados? Algum programa?
       
      Desde já agradeço.
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.