Ler arquivo XML eSocial
Prezados Senhores,
Estou lendo um arquivo XML e tenho que pegar o conteúdo da seguinte tag:
-<evento Id="ID1332642270000002020033110500400026">
pois nela é que posso pegar a matrícula do funcionário nas últimas 5 posições (00026)
Atenciosamente
Rogerio Barbosa
Estou lendo um arquivo XML e tenho que pegar o conteúdo da seguinte tag:
-<evento Id="ID1332642270000002020033110500400026">
pois nela é que posso pegar a matrícula do funcionário nas últimas 5 posições (00026)
Atenciosamente
Rogerio Barbosa
Rogerio Ferreira
Curtidas 0
Respostas
Raimundo Pereira
17/04/2020
Prezados Senhores,
Estou lendo um arquivo XML e tenho que pegar o conteúdo da seguinte tag:
-<evento Id="ID1332642270000002020033110500400026">
pois nela é que posso pegar a matrícula do funcionário nas últimas 5 posições (00026)
Atenciosamente
Rogerio Barbosa
Estou lendo um arquivo XML e tenho que pegar o conteúdo da seguinte tag:
-<evento Id="ID1332642270000002020033110500400026">
pois nela é que posso pegar a matrícula do funcionário nas últimas 5 posições (00026)
Atenciosamente
Rogerio Barbosa
Fiz um exemplo muito rápido, veja se te ajuda.
Veja o resultado na imagem abaixo
https://uploaddeimagens.com.br/imagens/ZYottxI
uses
System.StrUtils,
private
{ Private declarations }
function RetornaNumeros(const S: string): string;
function CopiaReversa(S: String; Index, Count : Integer) : String;
function TForm2.CopiaReversa(S: String; Index, Count : Integer) : String;
begin
Result := ReverseString(S);
Result := Copy(Result, Index, Count);
Result := ReverseString(Result);
end;
function TForm2.RetornaNumeros(const S: string): string;
var
vText : PChar;
begin
vText := PChar(S);
Result := '';
while (vText^ <> #0) do
begin
{$IFDEF UNICODE}
if CharInSet(vText^, ['0'..'9']) then
{$ELSE}
if vText^ in ['0'..'9'] then
{$ENDIF}
Result := Result + vText^;
Inc(vText);
end;
end;
Aqui ocorre o processo de leitura e extração
procedure TForm2.Btn_LerXMLClick(Sender: TObject);
var i : integer; EntryNode:IXmlNode;
Res:string;
begin
memo1.Clear;
XMLDocument1.LoadFromFile(JvFilenameEdit1.Text);
XMLDocument1.Active := True;
EntryNode := xmldocument1.DocumentElement;
for i := 0 to EntryNode.ChildNodes.Count -1 do
memo1.Lines.Add(EntryNode.ChildNodes[i].xml);
for i := 0 to memo1.Lines.Count -1 do
begin
if pos(Edt_TAG.Text,memo1.Lines.Strings[i])>0 then
Res:= Trim((copy(memo1.lines.Strings[i],Length(Edt_TAG.Text),StrToInt(Edt_last_Position.Text))));
end;
Edt_Valor_TAG.Text:=RetornaNumeros(res);
EDT_5_PO.Text:=CopiaReversa(Edt_Valor_TAG.Text,1,5);
end;
GOSTEI 0