xpath_Evaluate函数
函数名:xpath_XPath计算 / xpath_Evaluate
会员等级:免费版(Free) - 无需会员即可使用
函数功能
执行XPath数值或表达式计算并返回结果,支持数值运算、聚合函数、布尔判断及字符串计算,自动按结果类型返回,适用于XML数据统计与条件求值场景。
参数规范
| 参数名 | 类型 | 必填 | 示例 | 特殊说明 |
|---|---|---|---|---|
xml | String | 是 | "<books><book/></books>" | XML格式的文本或XML文件路径(自动判断) |
xpath | String | 是 | "count(//book)" | 要计算的XPath表达式,支持函数运算与聚合计算 |
使用案例
统计节点数量
问题描述:计算book节点的数量 公式演示:
excel
=xpath_XPath计算("<books><book/><book/><book/></books>", "count(//book)")输出效果:
text
3求和计算
问题描述:计算所有book节点的price属性值之和 公式演示:
excel
=xpath_XPath计算("<books><book price='35'/><book price='50'/><book price='28'/></books>", "sum(//book/@price)")输出效果:
text
113布尔判断
问题描述:判断是否存在price大于40的book节点 公式演示:
excel
=xpath_XPath计算("<books><book price='35'/><book price='50'/></books>", "//book[@price>40] != ''")输出效果:
text
TRUE数值运算
问题描述:计算平均价格(总和除以数量) 公式演示:
excel
=xpath_XPath计算("<books><book price='30'/><book price='50'/></books>", "sum(//book/@price) div count(//book)")输出效果:
text
40字符串拼接
问题描述:将多个文本节点拼接为一个字符串 公式演示:
excel
=xpath_XPath计算("<books><book><title>三体</title></book><book><title>活着</title></book></books>", "concat(//book[1]/title, ' - ', //book[2]/title)")输出效果:
text
三体 - 活着使用文件路径
问题描述:从本地XML文件中计算订单总金额 公式演示:
excel
=xpath_XPath计算("D:\data\orders.xml", "sum(//order/@amount)")输出效果:
text
1280.5技术说明
实现原理
- 加载XML文档后,使用
XPathNavigator.Evaluate()方法计算XPath表达式 - 根据计算结果的运行时类型自动转换返回值:
- 结果为
double类型时返回数值 - 结果为
int类型时返回整数 - 结果为
bool类型时返回TRUE或FALSE - 结果为
string类型时返回字符串
- 结果为
支持的XPath函数
| 函数类别 | 常用函数 | 说明 |
|---|---|---|
| 节点函数 | count()、name()、local-name() | 节点统计与名称获取 |
| 数值函数 | sum()、number()、round()、floor() | 数值聚合与取整 |
| 字符串函数 | concat()、string()、substring()、contains() | 字符串拼接与处理 |
| 布尔函数 | true()、false()、not() | 布尔逻辑运算 |
| 运算符 | +、-、*、div、mod、=、!=、<、> | 算术与比较运算 |
输入模式自动判断
- 当输入参数以合法文件路径形式提供(如
D:\data\orders.xml)时,按文件路径加载XML - 当输入参数以
<开头的XML标签内容时,按XML字符串解析 - 自动判断逻辑确保两种输入方式无缝切换
异常处理
| 错误场景 | 返回值 |
|---|---|
| XML格式不合法 | 错误提示 |
| XPath表达式语法错误 | 错误提示 |
| 计算结果为空 | 空字符串 |
| 文件路径不存在或不可读 | 错误提示 |
| 参数为空或null | 错误提示 |
扩展应用
与IF函数结合做条件判断
excel
=IF(xpath_XPath计算(A1, "count(//error)>0"), "存在错误", "无错误") // A1中为XML字符串XML数据统计与分析
配合单元格引用,可对XML格式的报表数据进行汇总统计,适用于SOAP接口响应解析、Sitemap链接数统计、配置文件参数计算等场景。
注:本函数为免费功能,支持XML字符串和文件路径两种输入方式,在WPS 2019+和Excel 365中测试通过。