XPath函数是在XPath查询语句中可直接调用的内置功能,主要用于对节点进行统计、判断、转换等操作,能够简化复杂的节点筛选逻辑,让查询更精准高效。常见的XPath函数包括统计节点数量的count()、判断内容包含的contains()、获取节点文本的text()等,不同类型的函数适用于不同的查询场景。

XPath函数的基本分类
XPath函数按照功能可以分为多个类别,不同类别的函数对应不同的使用场景:
- 节点统计类:用于统计符合条件的节点数量,最典型的就是count()函数。
- 字符串判断类:用于判断节点文本内容是否符合特定规则,contains()属于这类函数。
- 节点导航类:用于定位节点的父节点、子节点、兄弟节点等,比如parent::、child::相关函数。
- 数值计算类:用于节点的数值运算,比如sum()函数可以计算多个节点的数值总和。
count()函数的用法
count()函数的作用是统计指定路径下符合条件的节点数量,其语法格式为count(节点路径),返回的结果是一个整数。
使用场景示例
假设我们有如下的XML文档,记录了员工信息:
<?xml version="1.0" encoding="UTF-8"?>
<company>
<department name="技术部">
<employee>
<name>张三</name>
<age>28</age>
</employee>
<employee>
<name>李四</name>
<age>32</age>
</employee>
</department>
<department name="产品部">
<employee>
<name>王五</name>
<age>25</age>
</employee>
</department>
</company>
如果我们想要统计整个公司的员工总数,可以使用以下XPath查询语句:
count(//employee)
该语句会返回结果3,因为整个XML文档中共有3个employee节点。
如果只想统计技术部的员工数量,查询语句可以调整为:
count(/company/department[@name="技术部"]/employee)
此时返回结果为2,符合技术部的员工数量。
contains()函数的用法
contains()函数用于判断某个节点的文本内容是否包含指定的字符串,其语法格式为contains(节点文本, 目标字符串),返回的结果是布尔值,包含则返回true,否则返回false,通常和方括号筛选条件结合使用。
使用场景示例
还是以上面的员工XML文档为例,如果我们想要查找名字中包含张字的员工节点,可以使用以下查询语句:
//employee[contains(name, "张")]
该语句会匹配到name节点文本为张三的employee节点,返回对应的节点内容。
如果我们想要查找年龄文本中包含2的员工,查询语句可以写:
//employee[contains(age, "2")]
此时会匹配到age为28和32的两个employee节点,因为这两个节点的文本内容都包含数字2。
count()和contains()结合使用
在实际查询中,我们也可以将count()和contains()结合使用,比如统计名字中包含张字的员工数量,查询语句如下:
count(//employee[contains(name, "张")])
该语句先通过contains()筛选出名字包含张的员工节点,再用count()统计数量,最终返回结果为1。
注意事项
- count()函数的参数必须是节点集合,不能直接传入字符串或者数值,否则会返回错误。
- contains()函数对大小写敏感,如果需要忽略大小写,部分XPath实现中可以先使用lower-case()函数转换文本后再判断。
- 在HTML文档中使用XPath查询时,同样可以调用这两个函数,比如统计class属性包含active的div节点数量,语句为
count(//div[contains(@class, "active")])。
XPathcount函数contains函数XML查询修改时间:2026-07-01 03:00:32