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

如何用XQuery删除XML中每个<2>节点下多余的<3>节点

使用XQuery保留每个<2>节点下仅一个<3>节点的解决方案

场景回顾

你的原始XML结构如下:

<1>
    <2>
        <3/>
        <3/>
        <3/>
    </2>
    <2>
        <3/>
        <3/>
    </2>
</1>

解决方案分两种场景:


1. 生成处理后的新XML(无修改原文档需求)

直接用XQuery的节点构造逻辑,过滤掉多余的<3>节点:

element 1 {
    for $two in //2
    return element 2 {
        $two/3[1]  (: 仅保留每个<2>下的第一个<3>节点 :)
    }
}

这段代码会遍历所有<2>节点,对每个<2>只保留它的第一个<3>子节点,最终输出符合要求的XML结构。


2. 直接修改原文档(支持XQuery Update Facility的环境)

如果你的XQuery引擎支持更新操作(比如BaseX、MarkLogic、eXist-db等),可以直接执行删除语句移除冗余节点:

delete node //2/3[position() > 1]
  • 逻辑说明://2/3[position() > 1]会定位到所有<2>节点下位置不是第一个的<3>节点,delete node语句直接删除这些节点。
  • 若需保留最后一个<3>而非第一个,只需把条件改为position() < last()即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 09:16:35