El ejemplo de HtmlAgilityPack para cambiar enlaces no funciona. ¿Cómo logro esto?
El ejemplo deCodeplex Es esto :
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");
El primer problema es HtmlDocument.DocumentElement ¡no existe! Lo que existe es HtmlDocument.DocumentNode pero incluso cuando uso eso, no puedo acceder al atributo href como se describe. Obtuve el siguiente error:
Cannot apply indexing with [] to an expression of type 'HtmlAgilityPack.HtmlNode'
Aquí está el código que estoy tratando de compilar cuando recibo este error:
private static void ChangeUrls(ref HtmlDocument doc)
{
foreach(HtmlNode link in doc.DocumentNode.SelectNodes("//@href"))
{
HtmlAttribute attr = link["href"];
attr.Value = Rewriter(attr.Value);
}
}
ACTUALIZAR: Acabo de descubrir que el ejemplo nunca fue pensado para funcionar ... Y tengo una solución después de leer el código de ejemplo ... Publicaré mi solución para que otras personas como yo la disfruten una vez que la completen.