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

如何编写XPath表达式选取多个指定XML元素?

XPath多节点联合选取实现方案

给定测试XML结构

<?xml version="1.0" encoding="UTF-8"?>
<a>
   <b>
      <c>110</c>
      <d>periodendyear="2019"</d>
      <e>
         <f>
            <code>xyz</code>
            <value>54</value>
         </f>
      </e>
      <e>
         <f>
            <code>xy</code>
            <value>6</value>
         </f>
      </e>
   </b>
</a>

需求

编写XPath表达式,选取所有b元素子树范围内的目标元素,实现类似//b | //f的多节点联合选取效果。

注:示例XML中a是文档根节点,为b的父元素,b的子树内不存在a节点,如果需要同时选中根节点a,在最终表达式末尾追加| /a即可。

可用写法

1. 全版本兼容写法(支持XPath 1.0,所有解析器通用)

和示例的联合选取逻辑一致,用管道符|拼接多个匹配路径即可:

//b/d | //b//code | //b//value

路径规则说明:

  • //b/d:匹配所有b节点下的直接子节点d
  • //b//code:匹配所有b节点任意层级后代中的code元素(code嵌套在e>f节点下,不是b的直接子节点,所以用//匹配后代)
  • //b//value:匹配所有b节点任意层级后代中的value元素

2. XPath 2.0及以上版本简化写法

XPath 2.0开始支持单路径内多节点匹配,写法更简洁:

//b/(d, .//code, .//value)

匹配结果

针对给出的示例XML,上述表达式会准确选中以下节点:

  • 内容为periodendyear="2019"的d节点
  • 内容为xyz的code节点
  • 内容为54的value节点
  • 内容为xy的code节点
  • 内容为6的value节点

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 17:12:32