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

如何使用JSEL从JSON中获取指定cod值的父级键?

获取指定cod值对应的父级键名(JSEL + XPath)

要在JSEL中根据指定cod值(如"S1")获取其对应的各级父级键名(如shoes、items、Clothes),可以通过XPath的**祖先轴(ancestor)**结合节点名称函数实现,具体步骤如下:

1. 核心XPath表达式

先定位到目标cod节点,再向上遍历所有祖先节点并提取它们的名称(即JSON中的键名):

//*[@cod='S1']/ancestor::*/name()

表达式拆解:

  • //*[@cod='S1']:匹配所有包含cod属性且值为"S1"的节点
  • /ancestor::*:选中该节点的所有祖先节点(从直接父节点一直到顶层根节点)
  • /name():提取每个祖先节点的名称(对应JSON结构中的键名)

2. 代码示例

结合JSEL执行上述表达式:

var dom = jsel(data);
// 获取cod为"S1"的所有父级键名
var parentKeys = dom.selectAll("//*[@cod='S1']/ancestor::*/name()");
console.log(parentKeys); 
// 输出:["sizes", "shoes", "items", "Clothes"]

3. 进阶筛选(可选)

如果只需要特定层级的父键(比如跳过sizes这类中间键,只保留shoes、items、Clothes),可以通过节点名称过滤:

//*[@cod='S1']/ancestor::*[name()='shoes' or name()='items' or name()='Clothes']/name()

执行后会得到:["shoes", "items", "Clothes"]

4. 处理重复cod值

如果JSON中存在多个相同cod值(如示例中的"L1"),上述表达式会返回所有对应节点的父键。若需要去重,可通过JS处理:

var uniqueParentKeys = [...new Set(parentKeys)];

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 14:27:29