替换元素标签保留其 children

Replace element tag keep its children

假设我有这个简单的 xml:

<root>
   <dad> 
     <kid> wee </kid>
   </dad>
</root>

我的目标是用 <mom> 替换 <dad> 但保留孩子的信息。

我试过了

xml.XPathSelectElements("dad")

然后循环

dad.ReplaceWith(new XElement("mom", dad.descendants());

但它不起作用:(

关于如何做到这一点有什么想法吗?

您似乎想将元素 'dad' 重命名为 'mom':

xml.Root.Elements("dad").ToList().ForEach(d => d.Name = "mom");

如果 'mom' 是一个具有自己的元素和属性的现有元素,我将替换 'dad'-元素并将 'kid'-元素添加到 'mom' 元素:

xml.Root.Elements("dad").ToList().ForEach(d =>
{
    XElement mom = new XElement("mom"); //use your mom here
    mom.Add(d.Descendants());
    d.ReplaceWith(mom);
});