我想使用 C# 从 html 中删除内部样式。这是我的 Html 文本
<span style="font-family: tahoma; color: #9bbb59;">This is a simple text.</span><br />
<table>
<thead>
</thead>
<tbody>
<tr>
<td> 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> 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;
