HTML XPathクラス名による検索

asp.net c# html html-agility-pack xpath

質問

私はC#のxpathに問題がある
私はこの構造を持つすべての要素を探したい
私は10のリンクを持っています。それらのすべてがこの構造を持っています:

<div class="PartialSearchResults-item" data-zen="true">
<div class="PartialSearchResults-item-title">
<a class="PartialSearchResults-item-title-link result-link"target="_blank" href='https://www.google.com/'> Google</a>
    </div>
<p class="PartialSearchResults-item-url">www.google.com</p>
<p class="PartialSearchResults-item-abstract">Search the world.</p>
   </div>

たとえば、このサンプルでは、​​「Google」と「www.google.com」と「Search the world」を取得したいと考えています。

<div class="PartialSearchResults-item" data-zen="true">
<div class="PartialSearchResults-item-title">
<a class="PartialSearchResults-item-title-link result-link"target="_blank" href='https://www.google.com/'> Google</a>
    </div>
<p class="PartialSearchResults-item-url">www.google.com</p>
<p class="PartialSearchResults-item-abstract">Search the world.</p>
   </div>

しかし、私はエラーnull参照を取得

受け入れられた回答

問題は、 titlesを取得しているクエリにあります。 divを探していますが、 class属性にはアイテムのルートノードであるPartialSearchResults-itemが含まれています。しかし、あなたのクエリに満足している他のノードもあります。たとえば、クラスPartialSearchResults-item-title divもクエリを満足しています。次に、この2つのdivを選択した後で、それらを反復して、子ノードの合計を取得しようとしています。正しいノードがあるため、コードは正常に動作しますが、2番目の反復ではPartialSearchResults-item-titleだけ持っているあなたが得るので、 a NullReferenceExceptionあなたは説明のために照会されている2回目の反復では、あなたがの値を取得しようとしているため、 InnerTextのプロパティnullオブジェクトを

string description = node.SelectSingleNode(".//*[contains(@class,'PartialSearchResults-item-abstract')]").InnerText;

私はcontainsていないことをお勧めしcontains 。あなたの場合、ルートノードにはPartialSearchResults-itemクラスが1つしかないので、このようにクエリできます

string description = node.SelectSingleNode(".//*[contains(@class,'PartialSearchResults-item-abstract')]").InnerText;



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