如何在C#中删除根元素

我是XML&C#的新手。 我想删除根元素而不删除子元素。 XML文件的结构如下。

   KR04 02.05.2013 9:52:41  
AUTOMATIC
22

我想根元素“dataroot”,所以它应该如下所示。

    KR04 02.05.2013 9:52:41  
AUTOMATIC
22

删除子元素看起来很简单,但我不知道如何只删除根元素。 下面是我到目前为止尝试过的代码。

  XmlDocument xmlFile = new XmlDocument(); xmlFile.Load("path to xml"); XmlNodeList nodes = xmlFile.SelectNodes("//dataroot"); foreach (XmlElement element in nodes) { element.RemoveAll(); } 

有没有办法只删除根元素? 不删除子元素? 谢谢你在advnace。

最简单的方法是使用LINQ to XML – 类似这样的:

 XDocument input = XDocument.Load("input.xml"); XElement firstChild = input.Root.Elements().First(); XDocument output = new XDocument(new XDeclaration("1.0", "utf-8", "yes"), firstChild); output.Save("output.xml"); 

或者,如果您不需要XML声明:

 XDocument input = XDocument.Load("input.xml"); XElement firstChild = input.Root.Elements().First(); firstChild.Save("output.xml"); 

简单解决方案

 var doc = new XmlDocument(); doc.LoadXml(xml); newxml = doc.LastChild.OuterXml; 

如果你需要用c#编码方式

  foreach (XElement item in Element.Descendants("dataroot").ToList()) { item.ReplaceWith(item.Nodes()); }