如何使用HtmlAgilityPack在C#中删除HTML字符串中的<br>标签?

3

我有一个HTML字符串,我正在使用HtmlAgilityPack解析HTML字符串。

这是我的html字符串:

<p class="Normal-P" style="direction: ltr; unicode-bidi: normal;"><span class="Normal-H">sample<br/></span> <span class="Normal-H">texting<br></span></p>

这个HTML字符串中有两个<br>标签,我该如何删除它们?

1
你尝试过什么? || Stack Overflow问题清单 - SynerCoder
2个回答

5

操作步骤如下:

  • 将HTML片段加载到Agility Pack的HtmlDocument
  • 使用"//br" xpath表达式获取所有<br />标签
  • 使用Remove()方法删除前面一步中获得的标签
  • 检查结果在DocumentNode.OuterHtml属性中

以下是代码示例:

const string htmlFragment =
    @"<p class=""Normal-P"" style=""direction: ltr; unicode-bidi: normal;"">" +
    @"<span class=""Normal-H"">sample<br/></span>" +
    @"<span class=""Normal-H"">texting<br></span></p> ";

var document = new HtmlAgilityPack.HtmlDocument();
document.LoadHtml(htmlFragment);

foreach (var brTag in document.DocumentNode.SelectNodes("//br"))
    brTag.Remove();

Console.WriteLine(document.DocumentNode.OuterHtml);

1
string html = ...;
string html = Regex.Replace(html, "<br>", "", RegexOptions.Singleline);

这并不处理 <br/> 标签。而且使用正则表达式解析 HTML 通常是一个坏主意:https://dev59.com/X3I-5IYBdhLWcg3wq6do#1732454 - Cristian Lupascu
你可以使用 <br.*?> 来移除所有类型的 <br>。这个问题不是关于解析=获取值,而只是关于移除字符串中不必要的部分,正则表达式是一个很好的解决方案。 - VladL

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接