Frage

Das Beispiel auf codeplex ist dies:

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");

Die erste Ausgabe ist Htmldocument. Document gibt es nicht! Was gibt es ist Htmldocument. DocumentNode , aber auch, wenn ich das anstelle, ich bin nicht in der Lage das href Attribut zuzugreifen, wie beschrieben. Ich erhalte die folgende Fehlermeldung:

Cannot apply indexing with [] to an expression of type 'HtmlAgilityPack.HtmlNode'

Hier ist der Code, den ich versuche zu kompilieren, wenn ich diesen Fehler:

private static void ChangeUrls(ref HtmlDocument doc)
{
    foreach(HtmlNode link in doc.DocumentNode.SelectNodes("//@href"))
    {
        HtmlAttribute attr = link["href"];
        attr.Value = Rewriter(attr.Value);
    }
}

UPDATE: Ich fand nur, dass das Beispiel nicht an die Arbeit gedacht war ... Und ich habe eine Lösung nach dem Lesen der Beispielcode bekam ... Ich werde meine Lösung für andere Menschen schreiben wie ich einmal abgeschlossen zu genießen.

War es hilfreich?

Lösung

Hier ist meine schnelle Lösung auf Grundlage von Teilen des Beispielcodes in der ZIP enthalten.

private static void ChangeLinks(ref HtmlDocument doc)
        {
            if (doc == null) return;
            //process all tage with link references
            HtmlNodeCollection links = doc.DocumentNode.SelectNodes("//*[@background or @lowsrc or @src or @href]");
            if (links == null)
                return;

            foreach (HtmlNode link in links)
            {

                if (link.Attributes["background"] != null)
                    link.Attributes["background"].Value = _newPath + link.Attributes["background"].Value;
                if (link.Attributes["href"] != null)
                    link.Attributes["href"].Value = _newPath + link.Attributes["href"].Value;(link.Attributes["href"] != null)
                    link.Attributes["lowsrc"].Value = _newPath + link.Attributes["href"].Value;
                if (link.Attributes["src"] != null)
                    link.Attributes["src"].Value = _newPath + link.Attributes["src"].Value;
            }
        }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top