xpathexpression式去除空格
我有这个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>
我想提取(16:00)string没有额外的空白。 这可能吗?
使用xpath-expressen获取标签的内容,然后使用trim() (假设您使用的是php)或者一些等价的函数来删除开始或结束处的任何空格。
I.使用这个单一的XPathexpression式 :
translate(normalize-space(/tr/td/a), ' ', '')
说明 :
-
normalize-space()
从其参数中产生一个新的string,其中任何前导或尾随的空格(空格,制表符,NL或CR字符)被删除,并且任何中间空格被replace为单个空格字符。 -
translate()
采用normalize-space()
生成的结果,并生成一个新的string,其中每个剩余的中间空格都被空stringreplace。
II。 或者 :
translate(/tr/td/a, ' 	 
', '')
请尝试下面的xpathexpression式:
在许多情况下,我们也可以使用XPath函数normalize-space(),它从string参数中产生另一个string,在这个string中前后两个空格组被切断,并且string中的每个空格都被一个空格replace。
在上面的例子中,我们将简单地使用下面的XPathexpression式:
/ * / aChild [normalize-space()='Hello World']
所以,
// td [@ class ='score-time status'] / a [normalize-space()= '16:00']
-
你可以检查text()节点是否为空。
/path/text()[not(.= '')]
它可能是有用的轴像下面的兄弟姐妹::如果这些是没有容器,或与儿童::。
- 你可以使用xpath 2的string()或regex()函数。
注意:有些评论说xpath不能做string操作…即使它不是真正为此devise的,你也可以做一些基本的事情:contains(),starts-with(),replace()。
如果你想检查空白节点就更困难了,因为你通常会有一个节点列表结果集,并且大多数xpath函数(比如match或replace)只能操作一个节点。
- 你可以分开节点和string操作
因此,您可以使用xpath来检索容器或文本节点列表,然后用另一种语言来处理它。 (例如java,php,python,perl)。