0

我正在尝试从节点获取文本,但正在附加来自其子节点的文本。我想避免它。

我转变HTMLXML使用HTMLCleaner,我有类似的东西

<td>
    <a>Link Text</a>
    Column Text
</td>

我只想Column Text被提取。避免选定的子项中存在任何文本td有没有办法做到这一点?到目前为止,我使用的是这个:

//td/text()
4

1 回答 1

1

这个 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 以返回符合条件的子节点值的字符串连接”。

于 2013-10-01T15:35:16.943 回答