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

标签 xpath

我想使用 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/

相关文章:

java - 从excel导入数据并在xpath的一部分中使用

python - 如何根据XML中XPath中子节点的值获取特定的 block (组)?

mysql - 将大量数据从 XML 文件转换为数据库

xpath - 如何使用CasperJS和XPath获取元素的HREF值

xml - 如何在不带结尾分隔符的情况下在XQuery中使用分隔符连接字符串?

xml - 从另一个节点的属性值中指定的路径检索 XML 节点

JavaScript 通过文本查找元素

php - 使用PHP在XML文件中搜索特定值

xml - 如何解决 "The download of the specified resource has failed"错误?

xmllint 没有返回我所期望的 -- n00b 警告