HTML Agility Pack Ersetzen Sie Links

.net c# html-agility-pack

Frage

Ich habe Code mit HTML Agility Pack. Was ich versuche zu tun ist, ersetzen Sie alle Links in HTML-Inhalten.

Zum Beispiel: Ich werde ersetzen

http://oldserver/Documents/1.pdf 

zu

http://newserver/Documents/2.pdf

Ich kann alle Verbindungen aufzählen und kann ihre Werte erhalten, aber wenn ich doc.Save () mache, speichert sie die ursprüngliche HTML-Quelle. Nicht das aktualisierte HTML. Wie kann ich das aktualisierte HTML von HtmlDocument erhalten.

private string FixHyperlinks(string contentHtml, SPWeb web)
    {
        TextReader reader = new StringReader(contentHtml);

        HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
        doc.Load(reader);

        List<string> hrefTags = new List<string>();

        foreach (HtmlNode link in doc.DocumentNode.SelectNodes("//a[@href]"))
        {
            HtmlAttribute att = link.Attributes["href"];
            att.Value = RepairHyperlinkAddress(att.Value, web);
        }

        MemoryStream memoryStream = new MemoryStream();
        doc.Save(memoryStream);
        memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
        StreamReader streamReader = new StreamReader(memoryStream);
        string result = streamReader.ReadToEnd();

        return result;
    }

Akzeptierte Antwort

Dies sollte besser funktionieren:

foreach (HtmlNode link in doc.DocumentNode.SelectNodes("//a[@href]"))
        {
            HtmlAttribute att = link.Attributes["href"];
            att.Value = RepairHyperlinkAddress(att.Value, web);
        }

foreach (HtmlNode link in doc.DocumentNode.SelectNodes("//img[@src]"))
        {
            HtmlAttribute att = link.Attributes["src"];
            att.Value = RepairHyperlinkAddress(att.Value, web);
        }



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum