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

如何将XML中多个Parent节点的子节点合并至单个Parent节点?

合并多个<Parent>节点为单个节点的解决方案

要实现把多个<Parent>节点合并成一个,并将所有子元素整合进去的需求,你可以基于现有的XDocument代码做如下修改:

我们的核心思路是:找到所有<Parent>元素,将第一个之外的所有子节点移动到第一个<Parent>中,然后删除多余的<Parent>节点。

以下是完整的代码示例,完美衔接你已有的代码逻辑:

var Response = httpService.GetResponse();
XDocument doc = XDocument.Parse(Response);

// 定位XML中所有的<Parent>元素
var parentElements = doc.Descendants("Parent").ToList();

// 仅当存在多个Parent节点时执行合并操作
if (parentElements.Count > 1)
{
    // 选取第一个Parent作为最终的容器节点
    var targetParent = parentElements.First();
    
    // 遍历剩余的Parent节点,转移它们的子元素并删除自身
    foreach (var extraParent in parentElements.Skip(1))
    {
        // 将当前多余Parent的所有子元素添加到目标Parent中
        targetParent.Add(extraParent.Elements());
        // 删除这个已经空了的多余Parent节点
        extraParent.Remove();
    }
}

// 获取修改后的XML字符串,可直接使用或输出
string modifiedXml = doc.ToString();

代码细节说明:

  • doc.Descendants("Parent"):查找文档中所有层级的<Parent>元素(因为你的Parent直接在根节点下,也可以用doc.Root.Elements("Parent"),效果一致)
  • ToList():将查询结果转为List集合,避免后续删除节点时触发枚举异常
  • parentElements.Skip(1):跳过第一个保留的Parent,处理剩下的所有多余节点
  • extraParent.Elements():获取当前多余Parent下的所有直接子元素,确保只转移内容不包含Parent节点本身
  • extraParent.Remove():完成子元素转移后,清理掉无用的空Parent节点

执行这段代码后,你的XML就会变成预期的结构——单个<Parent>节点包含所有原多个Parent下的子元素。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 03:47:36