我正在使用HtmlAgilityPack。XPath搜索所有文本節點,而不是任何其他子節點的內部文本
我將鼠標懸停在父節點上,其子節點顯示多個#text
節點。 XPath值顯示爲/code[1]/#text[1]
。我嘗試使用//#text
讓所有的文本節點,但我得到這個錯誤:
錯誤:Expression must evaluate to a node-set.
我已經試過//text
和得到什麼,但沒有錯誤。
我正在使用HtmlAgilityPack。XPath搜索所有文本節點,而不是任何其他子節點的內部文本
我將鼠標懸停在父節點上,其子節點顯示多個#text
節點。 XPath值顯示爲/code[1]/#text[1]
。我嘗試使用//#text
讓所有的文本節點,但我得到這個錯誤:
錯誤:Expression must evaluate to a node-set.
我已經試過//text
和得到什麼,但沒有錯誤。
這是有用的。我有父節點,並且我做了parent.SelectNodes(「// text()」),並且獲得了父節點的所有文本節點,但也在文檔中的父級以下的所有其他文本節點 - 奇怪!我必須做parent.SelectNodes(parent.XPath +「// text()」)來獲取所有的文本,但不會給這個 – 2011-05-20 21:48:12
與'parent.SelectNodes(「text()」)一起去''我不明白你的問題的最後部分... – lonesomeday 2011-05-20 21:52:21
@Chuck,你得到的事實所有文本節點都是父節點的後代,正是'//'的用途''''''是'descendant ::'的縮寫,如果你只是希望文本節點是父節點的直接子節點, child :: text()''。這個縮寫只是'text()',就像@lonesome建議的一樣。 – LarsH 2011-05-20 22:09:40
什麼是表示'/代碼[1] /#文本[1]'作爲XPath的?這不是有效的XPath。 – LarsH 2011-05-20 22:04:42
@LarsH在當前的HtmlNode(name = code)的ChildNodes中,打開第一個#text節點並向下滾動到VS 2008調試器中的XPath,它將顯示XPath。 – 2011-05-20 23:50:23
好吧,我不熟悉VS 2008調試器,但它向你展示的「XPath」並不是真正的XPath。 :-('#'不是語法的一部分 – LarsH 2011-05-21 02:35:50