2

我想使用 XPath 通过 text() 函数获取修改后的字符串列表

示例代码:

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

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

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

4

1 回答 1

2

XPath 2.0中,您可以直接在以下位置使用该函数text()

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


XPath 1.0中,仅使用一个表达式无法实现,因为:

  • substring-after()函数将 astring作为第一个参数,而不是 anode-set
  • 不能将函数指定为位置步骤(如上面的 2.0 示例所做的那样)。

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

concat(substring-after(//div/p[1]/text(), ' '),
       ' ',
       substring-after(//div/p[2]/text(), ' '))
于 2013-08-03T02:54:03.363 回答