XPath:如何在text()节点上执行字符串,子字符串或其他函数时获取多个字符串

时间:2013-08-03 02:41:31

标签: xpath

我想使用XPath通过text()函数

获取修改后的字符串列表

示例代码:

 <div>
        <p>
        Monday 2/4/13
        </p>
        <p>
        Tuesday 2/5/13
        </p>
 </div>

现在在这个例子中,如果我想在

标记之间获取文本数组,我会写一个表达式,例如 .// div / p /文本()的。但是,如果我只想获取日期,我可以使用substring-after函数,但代码 substring-after(.// div / p / text(),'')只能抓取一个要素。如何编写此表达式以获取所有文本元素?

1 个答案:

答案 0 :(得分:2)

XPath 2.0 中,您可以直接在text()中使用该功能:

//div/p/substring-after(text(), ' ')


XPath 1.0 中,只有一个表达式无法实现,因为:

  • substring-after()函数将 string 作为第一个参数,而不是node-set
  • 无法将函数指定为位置步骤(如上面的2.0示例所示)。

所以,在1.0中,你最好的选择是(你必须为每个节点重复一次 - 注意它只返回一个字符串):

concat(substring-after(//div/p[1]/text(), ' '),
       ' ',
       substring-after(//div/p[2]/text(), ' '))