【问题标题】:How to remove the <br> tag in my HTML string using HtmlAgilityPack in C#?如何在 C# 中使用 HtmlAgilityPack 删除我的 html 字符串中的 <br> 标签?
【发布时间】:2012-12-03 04:49:10
【问题描述】:

我有一个 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 字符串在两个地方有 &lt;br&gt; 标签。所以,我想删除这两个标签...

你能帮我删除我的 html 字符串中的所有 &lt;br&gt; 标记吗...

【问题讨论】:

标签: c# c#-4.0 html-agility-pack


【解决方案1】:
string html = ...;
string html = Regex.Replace(html, "<br>", "", RegexOptions.Singleline);

【讨论】:

  • 这不处理&lt;br/&gt; 标签。使用 Regex 解析 HTML 通常是个坏主意:stackoverflow.com/a/1732454/390819
  • 您可以使用来删除各种
    。这个问题不是关于解析=获取值,只是关于删除字符串的不必要部分,正则表达式是一个很好的解决方案。
【解决方案2】:

很简单:

  • 将 HTML 片段加载到敏捷包中 HtmlDocument
  • 使用"//br" xpath 表达式获取所有&lt;br /&gt; 标签
  • 使用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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-31
    • 2016-11-29
    • 1970-01-01
    • 1970-01-01
    • 2012-07-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多