You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用XPath计算XML节点中ttc与ht两个属性的差值

XPath计算ttc与ht属性差值的实现方法

你提供的XML示例如下:

<books>
  <book>
    <price ht="100" ttc="120"/>
  </book>
  <book>
    <price ht="150" ttc="180"/>
  </book>
</books>

实现方案

核心逻辑是先将属性值转换为数值类型再做减法,避免字符串类型导致的运算异常,根据你使用的XPath版本不同,对应两种实现方式:

方案1:XPath 2.0及以上版本(支持批量运算)

绝大多数主流XPath解析器都支持该版本,用以下表达式可以直接返回所有book/price节点的差值序列:
//book/price/(number(@ttc) - number(@ht))
针对你的示例,执行后返回结果为 20, 30。
如果需要输出带标识的结果,可以用字符串拼接函数:
//book/price/concat('差值:', number(@ttc) - number(@ht))
返回结果为 差值:20, 差值:30。

方案2:XPath 1.0版本(仅支持单节点运算)

XPath 1.0不支持批量节点运算,需要按节点索引逐个计算:

  • 第一个price节点差值:number(//book/price[1]/@ttc) - number(//book/price[1]/@ht) → 返回20
  • 第二个price节点差值:number(//book/price[2]/@ttc) - number(//book/price[2]/@ht) → 返回30

补充说明:如果你的解析器默认会自动将属性转换为数值类型,可以省略number()函数,加上该函数可以提升兼容性,避免大部分类型报错问题。


内容的提问来源于stack exchange,提问作者coutier eric

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 15:36:03