我一直在努力解决过去几天中遇到的这个问题。说,我想从HTML文档中获取所有文本(),但我只想知道和检索包含文本数据的节点的XPath。例如:使用XPath选择包含文本的所有节点
foreach (var textNode in node.SelectNodes(".//text()"))
//do stuff here
然而,当涉及到使用textNode.XPath
检索textNode的XPath中,我得到了充分的XPath包括#text
节点:
/html[1]/body[1]/div[1]/a[1]/#text
但我只想要含节点文本,例如:
/html[1]/body[1]/div[1]/a[1]
任何人都可以指向一个更好的XPath解决方案来检索包含文本的所有节点,但只能检索XPath直到包含节点?
我想过拆分XPath,然后删除#text节点。这可能是最好的解决方案,但我仍然想看看是否可以通过使用XPath来解决这个问题。如果到今天为止我还没有想出使用XPath的解决方案,那么将此答案标记为已回答。 – 2013-03-20 11:11:48
我使用第一行,但它给出了无法找到getXPath的错误。哪个命名空间包含getXPath? – user585440 2016-01-10 05:36:03
@ user585440对不起,我不记得这个函数是如何工作的,但它看起来取决于你的环境。它似乎返回包含给定'textNode'的String对象的内容。我相信你可以在官方的.NET文档中找到类似的功能。 – 2016-01-11 17:06:58