在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。

現在我想獲得textNode的第一個父div以返回完整的InnerText。

提前致謝

一般承認的答案

這樣做我認為......

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合法嗎? 是的,了解原因