【问题标题】:Replace element tag keep its children替换元素标签保留它的孩子
【发布时间】:2018-02-27 08:43:15
【问题描述】:

假设我有这个简单的 xml:

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

我的目标是用&lt;mom&gt; 替换&lt;dad&gt;,但保留孩子的信息。

我试过了

xml.XPathSelectElements("dad")

然后循环和

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

但它不起作用:(

关于如何做到这一点的任何想法?

【问题讨论】:

  • 我觉得您有几个选择,例如将子项复制到具有正确元素层次结构的新集合中,但如果您要更改 的所有元素,我会解析将 xml 转换为字符串,.Replace() 然后解析回来。

标签: c# linq linq-to-xml


【解决方案1】:

您似乎想将元素“爸爸”重命名为“妈妈”:

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);
});

【讨论】:

    猜你喜欢
    • 2015-08-26
    • 1970-01-01
    • 1970-01-01
    • 2021-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多