使用备用文本html敏捷包替换图像

asp.net c# html-agility-pack

我需要为图像解析HTML,并用一个新标签替换这些标签,该标签只包含备用文件中包含的文本。有人可以用linq和标准用法来展示如何做到这一点吗?

我现在使用linq样本来替换段落。但是,我得到一个只读错误。

    HtmlDocument doc = new HtmlDocument();
    doc.LoadHtml(html);      
    IEnumerable<HtmlNode> paragraphs = doc.DocumentNode.DescendantNodes().Where(p => p.Name.ToLower() == "p");
    foreach (HtmlNode p in paragraphs)
    {
        p.InnerText = "Hello World";
    }

还有一种简单的方法可以将其转回文本吗?即输出为字符串

这就是我所拥有的不起作用

MemoryStream outStream = new MemoryStream();
doc.Save(outStream);


outStream.Seek(0, SeekOrigin.Begin);
StreamReader reader = new StreamReader( outStream );
string text = reader.ReadToEnd();

一般承认的答案

var images = doc.DocumentNode.SelectNodes("//img");
if (images != null)
{
    foreach (HtmlNode image in images)
    {
        var alt = image.GetAttributeValue("alt", "");
        var nodeForReplace = HtmlTextNode.CreateNode(alt);
        image.ParentNode.ReplaceChild(nodeForReplace, image);
    }
}

var sb = new StringBuilder();
using (var writer = new StringWriter(sb))
{
    doc.Save(writer);
}


许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因