如何使用HTMLAgilityPack从HTML中删除空行?

时间:2015-04-03 14:41:11

标签: c# html html-agility-pack

我有一个HTML文档,其中包含许多我想删除的不必要的空白行。以下是HTML的示例:

<html>

<head>


</head>

<body>

<h1>Heading</h1>

<p>Testing

我已经尝试了以下代码,但它删除了每个换行符,我只想删除那些空白行。

static string RemoveLineReturns(string html)
    {
        html = html.Replace(Environment.NewLine, "");
        return html;
    }

知道如何使用HTMLAgilityPack执行此操作吗? 谢谢, 学家

2 个答案:

答案 0 :(得分:4)

使用Html Agility Pack的一种可能方式:

var doc = new HtmlDocument();
//TODO: load your HtmlDocument here

//select all empty (containing white-space(s) only) text nodes :
var xpath = "//text()[not(normalize-space())]";
var emptyNodes = doc.DocumentNode.SelectNodes(xpath);

//replace each and all empty text nodes with single new-line text node
foreach (HtmlNode emptyNode in emptyNodes)
{
    emptyNode.ParentNode
             .ReplaceChild(HtmlTextNode.CreateNode(Environment.NewLine) 
                            , emptyNode
                           );
}

答案 1 :(得分:2)

我认为HTMLAgilityPack目前不具备本机解决方案。

对于这种情况,我使用以下正则表达式:

html = Regex.Replace(html, @"( |\t|\r?\n)\1+", "$1");

这会正确保留空格和行结尾,同时将多个制表符,换行符和空格压缩为一个。