【问题标题】:Replace images with alternate text html agility pack用替代文本 html 敏捷包替换图像
【发布时间】:2011-06-22 15:13:32
【问题描述】:

我需要为图像解析 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();

【问题讨论】:

    标签: c# asp.net html-agility-pack


    【解决方案1】:
    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);
    }
    

    【讨论】:

    • 谢谢。你能告诉我如何将文档保存回字符串吗?我已经用我所拥有的更新了上面的代码。它不起作用。
    猜你喜欢
    • 1970-01-01
    • 2013-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-26
    • 1970-01-01
    相关资源
    最近更新 更多