我正在尝试从节点获取文本,但正在附加来自其子节点的文本。我想避免它。
我转变HTML
为XML
使用HTMLCleaner
,我有类似的东西
<td>
<a>Link Text</a>
Column Text
</td>
我只想Column Text
被提取。避免选定的子项中存在任何文本td
有没有办法做到这一点?到目前为止,我使用的是这个:
//td/text()
我正在尝试从节点获取文本,但正在附加来自其子节点的文本。我想避免它。
我转变HTML
为XML
使用HTMLCleaner
,我有类似的东西
<td>
<a>Link Text</a>
Column Text
</td>
我只想Column Text
被提取。避免选定的子项中存在任何文本td
有没有办法做到这一点?到目前为止,我使用的是这个:
//td/text()
这个 XPath:
//td[a = 'Link Text']/text()[last()]
将选择“列文本”。
请注意,如果有多个td
's with a
's 的文本等于“链接文本”,则在XPath 1.0下,您将获得first such的最后一个文本td
;在XPath 2.0下,您将是所有此类的最后一个文本节点td
。
请注意,这不会在此示例中获取“先前文本”:
<td>
prior text
<a>Link Text</a>
Column Text
</td>
如果您需要“列文本”和“先前文本”,但不需要“链接文本”,并且可以使用 XPath 2.0,请使用以下命令:
string-join(/td/text(), '')
(一定要选择正确的td
;我假设这里只有一个来简化。)
对于 XPath 1.0,您必须在 XPath 之外组装文本节点。
另请参见“ XPath 以返回符合条件的子节点值的字符串连接”。