XPath“不”。忽略具有特定標記的分支

html-agility-pack xpath

我已經將一個網頁加載到HTML Agility Pack中並擁有一個DOM。我想使用XPATH來提取頁面上的所有文本(但不是<script>標籤中的javascript)。

我想我需要一個// text()然後'not'來忽略分支中有<script>任何標記。

我努力了

doc.DocumentNode.SelectNodes("//text()[not(self::script)]"))

doc.DocumentNode.SelectNodes("//text()[not(self::script)]"))

但都沒有工作。他們返回的節點的XPath屬性的示例是(注意腳本)

doc.DocumentNode.SelectNodes("//text()[not(self::script)]"))

我已經諮詢了這兩篇文章。

是否可以在XPath中進行“不”匹配?

使用Html Agility Pack從html中獲取所有文本 (這是一個很好的帖子,但它帶出了JS)

有什麼建議麼?

一般承認的答案

您的第一次嘗試拒絕所有作為腳本元素的文本節點,而您的第二次嘗試拒絕所有具有腳本節點子節點的文本節點。當然,在這兩種情況下,條件都不是真的。

您沒有清楚地解釋您的要求,但我想您要拒絕所有將腳本元素作為其父元素的文本節點

//text()[not(parent::script)]

要么

//text()[not(parent::script)]



許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因