我有这个HTML:
<tr class="even expanded first>
<td class="score-time status">
<a href="/matches/2012/08/02/europe/uefa-cup/">
16 : 00
</a>
</td>
</tr>
Run Code Online (Sandbox Code Playgroud)
我想在没有额外空格的情况下提取(16:00)字符串.这可能吗?
Dim*_*hev 125
I.使用此单个XPath表达式:
translate(normalize-space(/tr/td/a), ' ', '')
Run Code Online (Sandbox Code Playgroud)
说明:
normalize-space()
从其参数生成一个新字符串,其中删除任何前导或尾随空格(空格,制表符,NL或CR字符),并用单个空格字符替换任何中间空格.
translate()
获取生成的结果normalize-space()
并生成一个新字符串,其中每个剩余的中间空格都被空字符串替换.
II.另外:
translate(/tr/td/a, ' 	 
', '')
Run Code Online (Sandbox Code Playgroud)
小智 19
请尝试以下xpath表达式:
//td[@class='score-time status']/a[normalize-space() = '16 : 00']
Run Code Online (Sandbox Code Playgroud)
小智 1
您可以检查 text() 节点是否为空。
/路径/文本()[不是(.='')]
如果这些不是容器,或者与 child:: 等轴一起使用,它可能很有用。
注意:一些评论说 xpath 不能进行字符串操作...即使它并不是真正设计的,您也可以做基本的事情:包含(),开始与(),替换()。
如果你想检查空白节点,那就困难得多,因为你通常会有一个节点列表结果集,而大多数 xpath 函数,如匹配或替换,只操作一个节点。
因此,您可以使用 xpath 检索容器或文本节点列表,然后用另一种语言处理它。(例如 java、php、python、perl)。