InnerTextを使用するときにHTMLAgilityPackが単語を接続しないようにする

c# html-agility-pack

質問

私はHTML文書からテキストを取得する簡単な作業をしようとしています。だから私はそのためにHTMLdoc.DocumentNode.InnerTextを使用しています。問題は、いくつかのサイトでは、それらが異なるタグにあるときに単語の間にスペースを入れないということです。そのような場合、DocumentNode.InnerTextはそれらの単語を1つに結びつけ、無用になりました。

たとえば、その行を含むサイトを読み込もうとしています。

<span>Ä°stanbul</span><ul><li><a href="i1.htm">Adana</a></li>

私は意味がありません "Å°stanbulAdana"を得ています。

HTMLAgilityPackのドキュメントやGoogleで解決策が見つかりませんでした

何か不足していますか?

ありがとう、

受け入れられた回答

それはむしろ簡単に行うべきです。

const string html = @"<span>Ä°stanbul</span><ul><li><a href=""i1.htm"">Adana</a></li>";
var doc = new HtmlDocument();
doc.LoadHtml(html);
string result = string.Join(" ", doc.DocumentNode.Descendants()
  .Where(n => !n.HasChildNodes && !string.IsNullOrWhiteSpace(n.InnerText))
  .Select(n => n.InnerText));
Console.WriteLine(result); // prints "Ä°stanbul Adana"

人気のある回答

コードスニペットはこの例ではハングします。

const string html = @"<td><font size=""2"">abc </font><font size=""2"">(</font><font size=""2"">abc</font><font size=""2"">) </font><a href=""?query=abc"">abc</a>, abc<br><font size=""2"">abc </font>abc, <a href=""?query=abc"">abc</a>, abc, <a href=""?query=abc"">abc</a><br><font size=""2"">abc </font>abc abc, abc abc<br></td>";

join節なしではハングしません(ただし、スペースは正しく入れません)。



Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow