Exemplo de HtmlAgilityPack para alterar links não funciona. Como faço isso?
O exemplo emcodeplex é isto :
HtmlDocument doc = new HtmlDocument();
doc.Load("file.htm");
foreach(HtmlNode link in doc.DocumentElement.SelectNodes("//a[@href"])
{
HtmlAttribute att = link["href"];
att.Value = FixLink(att);
}
doc.Save("file.htm");
O primeiro problema é o HtmlDocument.DocumentElement não existe! O que existe é o HtmlDocument.DocumentNode mas mesmo quando eu uso isso, não consigo acessar o atributo href conforme descrito. Estou tendo o erro a seguir:
Cannot apply indexing with [] to an expression of type 'HtmlAgilityPack.HtmlNode'
Aqui está o código que estou tentando compilar quando recebo este erro:
private static void ChangeUrls(ref HtmlDocument doc)
{
foreach(HtmlNode link in doc.DocumentNode.SelectNodes("//@href"))
{
HtmlAttribute attr = link["href"];
attr.Value = Rewriter(attr.Value);
}
}
ATUALIZAR: Acabei de descobrir que o exemplo nunca foi concebido para funcionar ... E eu tenho uma solução depois de ler o código de exemplo ... Vou postar a minha solução para outras pessoas como eu para desfrutar uma vez concluído.