HtmlAgilityPack、XPathを使用するとメソッドと述語が含まれる

contains html-agility-pack xpath

質問

HtmlAgilityPack、XPathにはメソッドが含まれています

私はHtmlAgilityPackを使用しています。クラス属性に特定の単語が含まれているかどうかを知る必要があります。

<div class="yom-mod yom-art-content "><div class="bd">
<p class="first"> ....................
  </p>
</div>
</div>

私はこれをやっている:

HtmlDocument doc2 = ...;
List<string> paragraphs = doc2.DocumentNode.SelectNodes("//div[@class = 'yom-mod yom-art-content ']//p").Select(paragraphNode => paragraphNode.InnerHtml).ToList();

しかし、私が必要とするのはあまりにも具体的です。このようなものです:

List<string> paragraphs = doc2.DocumentNode.SelectNodes("//div[contains(@class, 'yom-art-content']//p").Select(paragraphNode => paragraphNode.InnerHtml).ToList();

しかし、それは動作しません、私を助けてください..

受け入れられた回答

おそらく問題は、contains()関数で閉じ括弧が欠落していることです。

//div[contains(@class, 'yom-art-content']//p
                                        v
//div[contains(@class, 'yom-art-content')]//p


List<string> paragraphs = 
        doc2.DocumentNode.SelectNodes("//div[contains(@class, 'yom-art-content')]//p")
            .Select(paragraphNode => paragraphNode.InnerHtml).ToList();

一般的な提案として、「うまくいかない」などと言ったときの意味を説明してください。問題を追跡するのに役立つエラーメッセージが表示されていると思いますか?


人気のある回答

このためにHAPを使用する代わりに、jQueryスタイルセレクタを提供するCsQueryを調べてください

あなたがやろうとしていることに特に適しています。

CsQueryは.NET 4用のjQueryポートです。すべてのCSS2とCSS3セレクタ、jQueryのすべてのDOM操作メソッド、およびいくつかのユーティリティメソッドを実装しています。ほとんどのjQueryテストスイート(1.6.2現在)はC#に移植されています。



Related

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