Html Agility Packはdivから特定のコンテンツを取得します

c# html html-agility-pack

質問

私は "div"からテキストを引き出し、他のすべてを除外しようとしています。私を助けてくれますか?

<div class="article">
   <div class="date">01.01.2000</div>
   <div class="news-type"><a href="../link/page01">Breaking News</a></div>

   "Here is the location of the text i would like to pull"

</div>

私は "記事"クラスをプルすると、私はすべてを得るが、私は/ classを除外する方法を知らない/ "日付"、クラス= "ニュースタイプ"、およびその中のすべて。

ここでは私が使用するコードです:

<div class="article">
   <div class="date">01.01.2000</div>
   <div class="news-type"><a href="../link/page01">Breaking News</a></div>

   "Here is the location of the text i would like to pull"

</div>

ありがとうございました!

受け入れられた回答

もう1つの方法は、 div要素からでない直接の子のテキストノードを取得するためにXPath /text()[normalize-space()]を使うことです:

var divs = doc.DocumentNode.SelectNodes("//div[contains(@class,'article')]");
foreach (HtmlNode div in divs)
{
    var node = div.SelectSingleNode("text()[normalize-space()]");
    Console.WriteLine(node.InnerText.Trim());
}

dotnetfiddle demo

出力:

var divs = doc.DocumentNode.SelectNodes("//div[contains(@class,'article')]");
foreach (HtmlNode div in divs)
{
    var node = div.SelectSingleNode("text()[normalize-space()]");
    Console.WriteLine(node.InnerText.Trim());
}

人気のある回答

HtmlTextNode型のChildNodesが必要です。未テストの推奨コード:

var textNodes = node.ChildNodes.OfType<HtmlTextNode>();
if (textNodes.Any())
{
    name_text.text += string.Join(string.Empty, textNodes.Select(tn => tn.InnerHtml));
}



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