我正在尝试从节点获取文本,但是正在追加来自它的子节点的文本。我想避免它。
我使用HTMLCleaner
将HTML
转换为XML
,我有类似的内容
<td>
<a>Link Text</a>
Column Text
</td>
我只想提取Column Text
。避免所选td
子项中存在的任何文本有没有办法做到这一点?我到目前为止使用的是:
//td/text()
答案 0 :(得分:1)
这个XPath:
//td[a = 'Link Text']/text()[last()]
将选择“列文字”。
请注意,如果有多个td
的{{1}}的文字等于“链接文字”,则在 XPath 1.0 下,您将获得最后一个文字第一个这样的a
;在 XPath 2.0 下,您将所有这样的td
的最后一个文本节点。
请注意,在此示例中,这不会选择“先前文本”:
td
如果您既需要“列文本”和“先前文本”,又不需要“链接文本”,并且如果您可以使用XPath 2.0,请使用:
<td>
prior text
<a>Link Text</a>
Column Text
</td>
(请务必同时选择正确的string-join(/td/text(), '')
;我假设这里只有一个可以简化。)
对于XPath 1.0,您必须在XPath之外组装文本节点。
另请参阅“XPath to return string concatenation of qualifying child node values”。