選擇包含XPath文本的所有節點

c# html-agility-pack xpath

我一直在努力解決過去幾天我遇到的這個問題。說,我想從HTML文檔中獲取所有text(),但是我只想知道並檢索包含文本數據的節點的XPath。例:

 foreach (var textNode in node.SelectNodes(".//text()")) 
 //do stuff here 

但是,當使用textNode.XPath檢索textNode的XPath時,我得到包含#text節點的完整XPath:

/html[1]/body[1]/div[1]/a[1]/#text

但我只想要文本的包含節點,例如:

/html[1]/body[1]/div[1]/a[1]

任何人都可以指向一個更好的XPath解決方案來檢索包含文本的所有節點,但只檢索XPath直到包含節點?

一般承認的答案

你為什麼不

string[] elements = getXPath(textNode).Split(new char[1] { '/' });
return String.Join("/", elements, 0, elements.Length-2);

熱門答案

而不是

.//text() 

用途

.//*[normalize-space(text())]

這將選擇具有至少一個非空白文本節點子節點的上下文(當前)節點的所有“葉元素” - 後代。



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow