Extrair texto entre tags HTML (LINQ+Regex)
Hoje o meu colega de trabalho pediu-me para o ajudar a extrair uma parte do texto de uma página p/ ser posteriormente enviado.
Não se trata nada de complexo, apenas apeteceu-me deixar aqui p/ consultar mais tarde caso precise 🙂
O HTML da página que deve ser pesquisado é algo como:
<TD valign=top colspan=6>TESTE 1XPTO ONLINE</TD>
</p>
Para o fazer, fiz o seguinte código:
Regex r = new Regex("<TD(.*?)>(.*?)</TD>");
string s = @"TESTE 1XPTO ONLINE </pre><TD valign=top colspan=6>TESTE 2XPTO ONLINE</TD><TD valign=top colspan=6>TESTE 3XPTO ONLINE</TD><TD valign=top colspan=6>TESTE 4XPTO ONLINE</TD><TD valign=top colspan=6>TESTE 5XPTO ONLINE</TD>"</span>;MatchCollection mc = r.Matches(s);foreach (Match m in mc){Console.WriteLine(m.Groups[2].Value.Trim());}</div>Outra forma de fazer o mesmo, e recorrendo ao LINQ, é esta:
var q = from Match m in new Regex(@"<TD(.*?)>(.*?)</TD>").Matches(s)select m.Groups[2].Value.Trim();q.ToArray<string>().ToList().ForEach(new Action<string>(EnviarSinais));Por fim, basta criar a função EnviarSinais:
static void EnviarSinais(string str){Console.WriteLine(str);}Quanto ao código em LINQ, se houver melhor forma de o fazer, indiquem pf 🙂