从整个HTML动态添加类到img标记

时间:2016-09-25 14:44:08

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

我有一个丰富的编辑器,可以添加文本和图像,使图像响应

class="img-thumbnail"
所有图像标签都需要

,因此使用HtmlAgility包从整个Html中提取图像标签,但如何在每个图像标签上添加该类。

实施例

提取图像标签后从html输入

<img src="http://domain.com/images/image1.jpg">

预期

<img src="http://domain.com/images/image1.jpg" class="img-thumbnail">

代码

 public string ParseImage(string pHtml)
    {

        HtmlDocument doc = new HtmlDocument();
        doc.LoadHtml(pHtml);
        var imgs = doc.DocumentNode.SelectNodes("//img");

        foreach (var item in imgs)
        {
            string orig = item.Attributes["src"].Value;
            //Add class to each img tag.
        }
      }

2 个答案:

答案 0 :(得分:1)

我想问题在于你需要在显示之前保存HTML。否则,HTML Agility Pack有时会忽略更改的属性。

public string ParseImage(string pHtml)
{

   HtmlDocument doc = new HtmlDocument();
   doc.LoadHtml(pHtml);
   var imgs = doc.DocumentNode.SelectNodes("//img");

    foreach (var item in imgs)
    {
        //string orig = item.Attributes["src"].Value;
        item.SetAttributeValue("class", "img-thumbnail");
        //Add class to each img tag.
    }
    using(StringWriter tw = new StringWriter ()){
        doc.Save(tw);
        return tw.ToString();
    }
 }

答案 1 :(得分:0)

您可以在css中为所有图片代码添加属性,例如

.img-thumbnail
{
  // your class property
}

img {
.img-thumbnail
}

这是一个类似的问题。

I want to apply an existing CSS style to all labels on a page. How?

相关问题