InnerText = InnerHtml - HtmlAgilityPackで読みやすいテキストを抽出する方法

html html-agility-pack innerhtml innertext vb.net

質問

私は非常に悪いHTMLからテキストを抽出する必要があります。

私はvb.netHtmlAgilityPackを使ってこれをしようとしています

解析する必要のあるタグには、InnerText = InnerHtmlとその両方があります。

Name:<!--b>&#61;</b--> Albert E<!--span-->instein  s<!--i>&#89;</i-->ection: 3 room: -

デバッグ中は、「Html viewer」を使って読むことができます:

Name:<!--b>&#61;</b--> Albert E<!--span-->instein  s<!--i>&#89;</i-->ection: 3 room: -

これを文字列変数にどうやって取得できますか?

編集:

私はこのコードを使ってノードを取得します:

Name:<!--b>&#61;</b--> Albert E<!--span-->instein  s<!--i>&#89;</i-->ection: 3 room: -

受け入れられた回答

あなたがこの混乱に気付いた場合、実際にはHTMLのコメントであり、無視されるので、テキストを取得してstring.Joinを使うstring.Joinで十分です:

C#

var text = string.Join("",htmlDoc.DocumentNode.SelectNodes("//text()[normalize-space()]").
                                            Select(t=>t.InnerText));

VB.net

var text = string.Join("",htmlDoc.DocumentNode.SelectNodes("//text()[normalize-space()]").
                                            Select(t=>t.InnerText));

htmlは有効ですが、それについては何も悪くはなく、魂のない誰かによって書かれただけです。

あなたのアップデートに基づいて、これは次のようになります:

var text = string.Join("",htmlDoc.DocumentNode.SelectNodes("//text()[normalize-space()]").
                                            Select(t=>t.InnerText));

これは//とは異なり現在のノードの子孫ノードを検索することを意味します.//は常に先頭のノードから開始します。




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