XPath: How to grab multiple strings when doing a string, substring, or another function on text() nodes
我想使用 XPath 通过 text() 函数获取修改后的字符串列表
示例代码:
1 2 3 4 5 6 | <p> Monday 2/4/13 </p> <p> Tuesday 2/5/13 </p> |
现在在这个例子中,如果我想获取
标记之间的文本数组,我会写一个表达式,例如 .//div/p/text() .但是,如果我只想抓取日期,我可以使用 substring-after 函数,但代码 substring-after(.//div/p/text(), \\' \\') 只抓取一个元素。如何编写此表达式来获取所有文本元素?
在 XPath 2.0 中,您可以直接在
中使用该函数
1 | //div/p/substring-after(text(), ' ') |
在 XPath 1.0 中,仅使用一个表达式无法实现,因为:
-
substring-after() 函数将string 作为第一个参数,而不是node-set - 不能将函数指定为位置步骤(如上面的 2.0 示例所做的那样)。
所以,在 1.0 中,你最好的选择是(你必须为每个节点重复 - 注意它只返回一个字符串):
1 2 3 | concat(substring-after(//div/p[1]/text(), ' '), ' ', substring-after(//div/p[2]/text(), ' ')) |