如何在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()); }