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), ' ', '') 

说明

  1. normalize-space()从其参数中产生一个新的string,其中任何前导或尾随的空格(空格,制表符,NL或CR字符)被删除,并且任何中间空格被replace为单个空格字符。

  2. translate()采用normalize-space()生成的结果,并生成一个新的string,其中每个剩余的中间空格都被空stringreplace。


II。 或者

 translate(/tr/td/a, ' &#9;&#10;&#13', '') 

请尝试下面的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)。