XPATHクエリ、HtmlAgilityPackおよびテキストの抽出

c# html html-agility-pack xpath

質問

私は "tim_new"というクラスからリンクを抽出しようとしていました。私は解決策も与えられています。

ソリューション、スニペット、必要な情報の両方をここに示します

上記のXPATHクエリは"//a[@class='tim_new'] 。私の質問は、このクエリはスニペットの最初の行(上記のリンクとスニペットの2行目で与えられたもの)をどのように区別したかです。

より具体的には、このXPATHクエリのリテラル変換(英語)は何ですか?


さらに、 NSE:に対して書かれたテキストを抽出するためのコードをいくつか書きたいと思いますNSE:

<div class="FL gL_12 PL10 PT15">BSE: 523395 &nbsp;&nbsp;|&nbsp;&nbsp; NSE: 3MINDIA &nbsp;&nbsp;|&nbsp;&nbsp; ISIN: INE470A01017</div>

必要な選択クエリを作成するのに役立つでしょう。

私のコードは次のように書かれている:

IEnumerable<string> NSECODE = doc.DocumentNode.SelectSingleNode("//div[@NSE:]");

しかし、これは正しく見えません。助けていただければ幸いです。

人気のある回答

最初の選択のXPathは、「tim_newの値を持つclassという名前の属性を持つすべてのドキュメント要素を選択します」と読みます。角かっこの中のものはあなたが返すものではなく、検索に適用する基準です。

私はHTML Agilityパックを持っていませんが、 "NSE:"をテキストとして持つdivをクエリしようとすると、2番目のクエリのXPathは "// div"になります。 LINQを使用します。

何かのようなもの

var nodes = 
    doc.DocumentNode.SelectNodes("//div[text()]").Where(a => a.InnerText.IndexOf("NSE:") > -1);

だから英語では、 "すぐにテキストを含むdiv要素をすべてLINQに返し、内部のテキスト値にNSEが含まれていることを確認してください:"繰り返しますが、構文が完璧であるかどうかはわかりませんが、それがアイデアです。

XPath "// div [@NSE:]"は、属性名に ":"が使用できないため、いずれの場合でも不正なNSE:および名前を持つすべてのdivを返します。あなたはその要素のテキストではなく、その属性のテキストを探しています。

希望は助けます。

注:両方のテキストに<div>NSE: some text<div>NSE: more text</div></div>ようなテキストが含まれているネストされた<div>NSE: some text<div>NSE: more text</div></div>場合は、重複した結果が得られる<div>NSE: some text<div>NSE: more text</div></div>



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