Jump to content
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.

 

 

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By 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 
    • By 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.
    • By samueloliveir
      Primeiramente, OBRIGADO pra quem me ajudar. Não estou conseguindo fazer, quem puder me ajudar a fazer me explicando !! Agradeço mt
       
       
      Então, tenho umas 12 tarefas que preciso entregar ate semana que vem, você poderia me ajudar com 2 tarefas que estou com dificuldades ? preciso que me ajude no visualg 
       
      Questão 1
      Crie um algoritmo que leia um número entre 2 e 20 e gere uma tela com a seguinte configuração:
       
      Digite um número:
      4
      Saída do algoritmo:
      1
      12
      123
      1234
      123
      12
      1
    • By brunoaires
      Boa tarde amigos,
      Estou com uma pequena duvida, preciso elaborar um algoritmo que busque a (latitude e longitude) de um dono de cachorro e a posição do respectivo cachorro, e preciso determinar a distância segura de 20 metros, se a distância for ultrapassada terá que emitir um alerta para o dono do cachorro
    • By Claudia França
      prezados como eu altero de loked para unloked do arro para não carregar o java e seguir com o procedimento. 
       
       
      ?Veja nesse link https://drive.google.com/drive/u/0/folders/1h0EbUoz3UOL8j9orWirUAPILt7cg7q-p 
      minhas imagens não estao subindindo aqui, não sei porque, acho que tenho limitação. 
       
       
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.