Como extrair texto entre tags HTML ou XML?

DAVID CANDIDO DA SILVA

DAVID CANDIDO DA SILVA Publicado 17/11/2017 


Há certos tipos de dados que queremos coletar de um HTML ou XML,
para o tratamento dos mesmos, ou melhor exibição.

Há formas de fazer isto com o TWebBrowser, mas nos obriga a ter
que carregar o arquivo no mesmo e a manipulação não é
muito fácil.

Mas digamos que tenhamos um HTML ou XML em uma variável, ou mesmo
recuperando através de um Get com o Indy (IdHTTP) com Delphi,
como podemos fazer a mineração dos dados?

Felizmente há uma função bem simples que nos ajudará!

Vamos ao código fonte:


function ExtractText(aText, OpenTag, CloseTag : String) : String;
{ Retorna o texto dentro de 2 tags (open & close Tag's) }
var
  iAux, kAux : Integer;
begin
  Result := '';
    if (Pos(CloseTag, aText) <> 0) and (Pos(OpenTag, aText) <> 0) then
  begin
    iAux := Pos(OpenTag, aText) + Length(OpenTag);
    kAux := Pos(CloseTag, aText);
    Result := Copy(aText, iAux, kAux-iAux);
  end;
end;


Exemplo de uso:


procedure TForm1.Button1Click(Sender: TObject);
const
  HTML =
  '<html>'+
  '<head>'+
  '<title>SHOW DELPHI</title>'+
  '</head>'+
  '<body>'+
  '<h1>Titulo 1</h1>'+
  '<h2>Titulo 2</h2>'+
  '</body>'+
  '</html>';
var
  variavelString : string;
begin
  variavelString := ExtractText(HTML,'<h1>', '</h1>');
  ShowMessage( variavelString );
end;


Espero que seja útil a todos!


Voltar ao topo