HTMLDocument内の特定のテキストの親divを見つける

.net html-agility-pack

質問

特定のテキストが内部にあるdivの完全なInnerTextを返したいと思います。

たとえば、HTMLDocument(HTMLAgilityPack)で「hello world」を検索していて、「hello world」が見つかったdivの完全なInnerTextを返したいとします。

これは私が試したものです:

HtmlNode textNode = doc.DocumentNode.SelectNodes("//text()[contains(., 'hello world')]/..")

これは、特定のテキストが見つかったHtmlNodeを返しました。

今度は、完全なInnerTextを返すようにtextNodeの最初の親divを取得します。

前もって感謝します

受け入れられた回答

これは私がそうするだろう...

var nodes2 = doc.DocumentNode.SelectNodes("//div[contains(.//text(), 'Hello World')]");

これはおそらくもっと良い解決策です:

var nodes2 = doc.DocumentNode.SelectNodes("//div[contains(.//text(), 'Hello World')]");

Linq-to-XML記法を使用してください:

var nodes2 = doc.DocumentNode.SelectNodes("//div[contains(.//text(), 'Hello World')]");

または

var nodes2 = doc.DocumentNode.SelectNodes("//div[contains(.//text(), 'Hello World')]");

人気のある回答

HTMLAgilityPackの経験はありませんが、XPath構文のように見えます。この場合、 ".."は見つかった要素の親を返すはずです。

私はこれをテストするためにこのウェブサイトを使用しました: http : //ponderer.org/download/xpath/

あなたが入力した場合

//li[contains(., 'about')]/../..

テキストボックスでは、ul要素(li要素を含む)を含むdivを緑で強調表示します。

これはあなたが探していたものですか?




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