在C#中查找并添加缺少的样式属性到HTML字符串



我陷入了棘手的情况,我在c#中有html标签的字符串:

字符串strhtml =" <span style="font-size: 10px;">Hi This is just a section of html text.</span><span style="font-family: 'Verdana'; font-size: 10px;">Please help</span><span>me add style attributes to span tags.Thank You</span>";

如您所见,有两个跨度标签,而没有" font-family:'verdana';"。我需要一些可以帮助我在这两个跨度标签中添加字体家庭的东西,因此所需的结果就是这样:

" <span style="font-size: 10px;font-family: 'Verdana';">Hi This is just an example of html text.</span><span style="font-family: 'Verdana'; font-size: 10px;">Please help<span style="font-family: 'Verdana';">me add style attributes to span tags.Thank You</span>"

我知道我可以在字符串开头添加另一个跨度标签,但这是我不想做的。任何帮助将不胜感激。

编辑:我尝试使用Regex.Replace方法数小时。但是我只是无法获得正确的输出。

在没有正直的情况下这样做的一种方法是使用htmlagilitypack库和递归功能:

public void SetFonts()
{
    string strHtml = "<span style="font-size: 10px; ">Hi This is just a section of html text.</span><span style="font-family: 'Verdana'; font-size: 10px; ">Please help</span><span>me add style attributes to span tags.Thank You</span>";
    HtmlDocument document = new HtmlDocument();
    document.LoadHtml(strHtml);
    SetFonts(document.DocumentNode);
    document.Save(Console.Out);
}

public void SetFonts(HtmlNode node)
{
    foreach (var item in node.Elements("span"))
    {
        var style = item.GetAttributeValue("style", null);
        if (style != null)
        {
            if (!style.Contains("font-family"))
            {
                var newValue = style + "font-family: 'Verdana';";
                item.SetAttributeValue("style", newValue);
            }
        }
        SetFonts(item);
    }            
}

结果:

<span style="font-size: 10px; font-family: 'Verdana';">Hi This is just a section of html text.</span><span style="font-family: 'Verdana'; font-size: 10px; ">Please help</span><span>me add style attributes to span tags.Thank You</span>

请注意,这根本没有任何样式的目标跨度标签。如果需要,您可以修改它。

您可以从Nuget下载htmlagilitypack库。

相关内容

  • 没有找到相关文章

最新更新