从C#中的Html字符串中删除不必要的标签[重复]
Posted
技术标签:
【中文标题】从C#中的Html字符串中删除不必要的标签[重复]【英文标题】:Remove Unnecessary Tags from Html string in c# [duplicate] 【发布时间】:2020-09-27 01:15:50 【问题描述】:我正在从系统获取这个 html 字符串
<h1>PDF Attachment</h1>
<h1 style="color: rgb(51, 51, 51); text-align: center;">
<p style="font-size: 14px; font-weight: 400; text-align: justify;">Your service detail are following</p><p style="font-size: 14px; font-weight: 400; text-align: justify;">
<table>
<tr><td></td></tr>
</table>
<br>
</p>
<p style="font-size: 14px; font-weight: 400; text-align: justify;">
<br>
</p>
</h1>
我在这个字符串中有两个 h1 标签。我想删除使用“table”标签的“h1”标签。
如何以编程方式删除它?
【问题讨论】:
可能跑题了,但我必须警告你,由于这个 HTML 中的错误,当你在浏览器中查看时,表格不会在段落内。 【参考方案1】:你可以使用HtmlAgilityPack
:
var content = @"<h1>PDF Attachment</h1><h1 style=""color: rgb(51, 51, 51); text-align: center;""><p style=""font-size: 14px; font-weight: 400; text-align: justify;"">Your service detail are following</p><p style=""font-size: 14px; font-weight: 400; text-align: justify;""><table><tr><td></td></tr></table> <br></p><p style=""font-size: 14px; font-weight: 400; text-align: justify;""><br></p></h1>";
HtmlDocument htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(content);
var h1NeedsToRemove = htmlDoc.DocumentNode.SelectNodes("/h1").Where(i => i.ChildNodes.Any(c => c.Name == "table")).FirstOrDefault();
var childNodesOfH1 = h1NeedsToRemove.ChildNodes;
h1NeedsToRemove.Remove();
htmlDoc.DocumentNode.AppendChildren(childNodesOfH1);
它会给你想要的输出:
<h1>PDF Attachment</h1>
<p style="font-size: 14px; font-weight: 400; text-align: justify;">Your service detail are following</p><p style="font-size: 14px; font-weight: 400; text-align: justify;">
<table>
<tr><td></td></tr>
</table>
<br>
</p>
<p style="font-size: 14px; font-weight: 400; text-align: justify;">
<br>
</p>
【讨论】:
但我需要这个输出PDF 附件
您的服务详情正在关注
以上是关于从C#中的Html字符串中删除不必要的标签[重复]的主要内容,如果未能解决你的问题,请参考以下文章