【问题标题】:Html Agillity Pack - Remove duplicate br tags while ignoring whitespaceHtml Agility Pack - 删除重复的 br 标签,同时忽略空格
【发布时间】:2015-09-09 08:53:00
【问题描述】:

我正在尝试删除重复的 br 标签,我可以使用以下代码:

if (doc.DocumentNode.SelectNodes("//br") != null)
{
    var nodes = doc.DocumentNode.SelectNodes("//br").ToArray();
    foreach (var node in nodes)
    {
        if (node.PreviousSibling != null && node.PreviousSibling.Name == "br")
        {
            node.Remove();        
        }
    }
}

以上面的代码为例,我可以删除:

this is an example <br><br><br><br> more text for example

将输出:

this is an example <br><br> more text for example

但如果 br 标签有空格,即如下所示:

this is an example <br><br> <br><br> more text for example

然后它不会忽略空格。我希望能够在忽略空格的同时删除重复的 br 标签。

希望我已经尽可能清楚,如果您需要更多信息,请告诉我,我会修改我的问题。

【问题讨论】:

    标签: c# xpath html-agility-pack


    【解决方案1】:

    你可以使用 XPath

    var nodes = doc.DocumentNode.SelectNodes("//br[following-sibling::br]").ToList();
    foreach(var node in nodes)
    {
        node.Remove();
    }
    

    这会将所有连续的br 替换为单个br

    【讨论】:

    • 嗨,谢谢你,我怎样才能保留两个br 标签。
    • @Mannie 删除一半的nodes :)
    • 删除一半不起作用,好像文档的某些部分有更多的br 标签,而另一个标签中的标签更少,它会在第一次匹配时删除。理想情况下,我需要有两个@ 987654327@ 剩下一个标签而不是一个
    • @Mannie 你可以试试//br[following-sibling::br[2]]
    • @har07 是的,已经尝试过了,但没有奏效。还是一样的输出。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-14
    • 1970-01-01
    • 2013-02-15
    • 2014-10-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多