我想使用 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(), ' ') 只能抓取一个元素。如何编写此表达式来抓取所有文本元素?
最佳答案
在XPath 2.0中,您可以直接在text()
中使用该函数:
//div/p/substring-after(text(), ' ')
在XPath 1.0中,仅使用一个表达式无法实现这一点,因为:
substring-after()
函数采用字符串
作为第一个参数,而不是节点集
- 无法将函数指定为位置步骤(如上面的 2.0 示例所示)。
因此,在 1.0 中,您最好的选择是这样的(您必须对每个节点重复该操作 - 还要注意它只返回一个字符串):
concat(substring-after(//div/p[1]/text(), ' '),
' ',
substring-after(//div/p[2]/text(), ' '))
关于XPath:在 text() 节点上执行字符串、子字符串或其他函数时如何获取多个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18028745/