Skip to main content
 首页 » 编程设计

c#之使用正则表达式 C# 从 HTML 中删除内部样式

2024年02月05日27artech

我想使用 C# 从 html 中删除内部样式。这是我的 Html 文本

    <span style="font-family: tahoma; color: #9bbb59;">This is a simple text.</span><br /> 
<table> 
    <thead> 
    </thead> 
    <tbody> 
        <tr> 
            <td>&nbsp;R1C1</td> 
            <td>R1C2</td> 
        </tr> 
        <tr> 
            <td>R2C1</td> 
            <td>R2C2</td> 
        </tr> 
    </tbody> 
</table> 
<style type="text/css" id="telerik-reTable-1"> 
    .telerik-reTable-1   { 
    border-width: 0px; 
    border-style: none; 
    border-collapse: collapse; 
    font-family: Tahoma; 
    } 
    .telerik-reTable-1 td.telerik-reTableFooterEvenCol-1  { 
    padding: 0in 5.4pt 0in 5.4pt; 
    text-align: left; 
    border-top: solid gray 1.0pt; 
    } 
</style> 

我希望它看起来像删除内部 CSS 后的样子。

 <span style="font-family: tahoma; color: #9bbb59;">This is a simple text.</span><br /> 
<table> 
    <thead> 
    </thead> 
    <tbody> 
        <tr> 
            <td>&nbsp;R1C1</td> 
            <td>R1C2</td> 
        </tr> 
        <tr> 
            <td>R2C1</td> 
            <td>R2C2</td> 
        </tr> 
    </tbody> 
</table> 

我使用了这个模式 @"<\s*style[^(style>)]*style>" .但它不起作用。

Note: I think I cann't use HtmlDocument to remove child node. Because it does not maintain parent child node relationship. so I want to use regular expression to remove the CSS.

请您参考如下方法:

您不应该使用正则表达式来解析 HTML 文档。检查此问题以了解原因。

RegEx match open tags except XHTML self-contained tags

你应该用 HTML Parser 来做,比如 Html Agility Pack .在这里你可以如何做到这一点。

        HtmlDocument doc = new HtmlDocument(); 
        doc.LoadHtml(htmlInput); 
 
        var nodes = doc.DocumentNode.SelectNodes("//style"); 
 
        foreach (var node in nodes) 
            node.ParentNode.RemoveChild(node); 
 
        string htmlOutput = doc.DocumentNode.OuterHtml;