如何使用 HTMLAgility Pack 从 HTML 中删除空行?
How to remove blank lines from HTML with HTMLAgilityPack?
我有一个 HTML 文档,其中包含许多我想删除的不必要的空白行。这是 HTML:
的示例
<html>
<head>
</head>
<body>
<h1>Heading</h1>
<p>Testing
我尝试了以下代码,但它删除了每个换行符,我只想删除那些空行。
static string RemoveLineReturns(string html)
{
html = html.Replace(Environment.NewLine, "");
return html;
}
知道如何使用 HTMLAgilityPack 做到这一点吗?
谢谢,
J.
我认为 HTMLAgilityPack 目前没有为此提供本机解决方案。
对于这种情况,我使用以下正则表达式:
html = Regex.Replace(html, @"( |\t|\r?\n)+", "");
这会正确保留空格和行尾,同时将多个制表符、换行符和空格压缩为一个。
使用 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
);
}
我有一个 HTML 文档,其中包含许多我想删除的不必要的空白行。这是 HTML:
的示例<html>
<head>
</head>
<body>
<h1>Heading</h1>
<p>Testing
我尝试了以下代码,但它删除了每个换行符,我只想删除那些空行。
static string RemoveLineReturns(string html)
{
html = html.Replace(Environment.NewLine, "");
return html;
}
知道如何使用 HTMLAgilityPack 做到这一点吗? 谢谢, J.
我认为 HTMLAgilityPack 目前没有为此提供本机解决方案。
对于这种情况,我使用以下正则表达式:
html = Regex.Replace(html, @"( |\t|\r?\n)+", "");
这会正确保留空格和行尾,同时将多个制表符、换行符和空格压缩为一个。
使用 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
);
}