过去几天我一直在努力解决这个问题。比如说,我想从一个 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?
最佳答案
代替:
.//text()
使用:
.//*[normalize-space(text())]
这将选择上下文(当前)节点的所有“叶元素”后代,这些节点至少有一个非空白文本节点子节点。
关于c# - 使用 XPath 选择包含文本的所有节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15511992/