HTMLAgilityPackでHTMLから空白行を削除するには?

c# html html-agility-pack

質問

私は削除したい不必要な空白行をたくさん含むHTML文書を持っています。 HTMLのサンプルは次のとおりです。

<html>

<head>


</head>

<body>

<h1>Heading</h1>

<p>Testing

次のコードを試しましたが、改行がすべて削除されました。空白行を削除したいだけです。

<html>

<head>


</head>

<body>

<h1>Heading</h1>

<p>Testing

どのようにHTMLAgilityPackでこれを行うのですか?おかげで、J.

受け入れられた回答

私はHTMLAgilityPackが現在そのためのネイティブなソリューションを提供しているとは思わない。

このようなシナリオでは、次のRegexを使用します。

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

これは、複数のタブ、改行、および空白を一つに集約しながら、空白と行末を正しく保存します。


人気のある回答

Html Agility Packを使用した1つの可能な方法:

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
                           );
}



ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ