



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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | 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!
Fonte base: https://pt.stackoverflow.com/questions/31767/extrair-texto-entre-tags-html-com-indy-idhttp-com-delphi
Dúvidas ou sugestões, deixe o seu comentário!
Você precisa fazer o login para publicar um comentário.
Ótima dica brother,
salvou eu rsrsrs
vlw
Obrigado pela diga!
Foi de grande utilidade.
Que bom que foi possível ajudar Kleiton!
Como implementar isso em um XML real? com mais de uma tag ?
Exemplo: uma api retorno 2 registros.