c# xml linq 向元素添加元素

标签 c# xml linq

我已经搜索并尝试了几个小时,但我无法让它发挥作用。所以我决定在这里问一个问题。请帮助我。

我有一个像这样的xml

<parent>
    <anothertag/>
    <body>
        <monitor value="3"/>
        <mouse value="5"/>
        <chair>
            <monoblock value="5"/>
        </chair>
    </body>
</parent>

如果可能,这是我想要的 xml 输出

<parent>
    <anothertag/>
    <body>
        <anotherbody>
            <monitor value="3"/>
            <mouse value="5"/>
            <chair>
                <monoblock value="5"/>
            </chair>
        </anotherbody>
    </body>
</parent>

这是我的代码

string xml = "<parent>" +
                "<anothertag/>" +
                "<body>" +
                "<monitor value=\"3\"/>" +
                "<mouse value=\"5\"/>" +
                "<chair>" +
                "<monoblock value=\"5\"/>" +
                "</chair>" +
                "</body>" +
                "</parent>";
                XDocument doc = XDocument.Parse(xml);
                var p = doc.Descendants("body").Elements();

                foreach (var item in doc.Descendants("body").ToList())
                {
                    item.Add(new XElement("anotherbody", p));
                }

                Console.WriteLine(doc.ToString());

这是输出

    <parent>
  <anothertag />
  <body>
    <monitor value="3" />
    <mouse value="5" />
    <chair>
      <monoblock value="5" />
    </chair>
    <anotherbody>
      <monitor value="3" />
      <mouse value="5" />
      <chair>
        <monoblock value="5" />
      </chair>
    </anotherbody>
  </body>
</parent>

输出是冗余的。我该如何删除它?

p.Remove(); 删除所有元素。谢谢

最佳答案

试试这个

foreach (var item in doc.Descendants("body").ToList())
{
      item.ReplaceAll(new XElement("anotherbody", item.Nodes()));
}

关于c# xml linq 向元素添加元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41217001/

相关文章:

c# - 在 OOP 中可以处理对象类外部的对象事件吗?

android - float 操作按钮图标不在中心

c# - 在c#中将对象列表导出到xml文件

.net - 如何将 LinQ 加入(类型化)数据集?

c# - 如何在 C# 中的枢轴后创建两个暗数组

javascript - 如何在RadGrid的编辑表单中ajaxify控件

c# - EF 表达式中的多个 'Or' 语句

c# - 如何在 C# 的 "if"语句中创建多个控件为假的方法?

java - Hibernate ConfigurationException : Could not locate cfg. xml 资源 [hibernate.cfg.xml] IntelliJ

c# - 如何移动列表中的数据