リンクを置き換えるHTML敏捷性パック

.net c# html-agility-pack

質問

私はHTMLアジリティパックを使用していくつかのコードを持っています。私がしようとしているのは、HTMLコンテンツのすべてのリンクを置き換えることです。

たとえば:私は置き換えます

http://oldserver/Documents/1.pdf 

http://newserver/Documents/2.pdf

すべてのリンクを列挙してその値を取得できますが、doc.Save()を実行すると元のHTMLソースが保存されます。更新されたhtmlではありません。どのように私はHtmlDocumentから更新されたhtmlを得ることができます。

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;
    }

受け入れられた回答

これはうまくいくはずです:

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



ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ