使用Linq将XML插入并保存到XML

时间:2011-06-13 05:57:37

标签: c# linq xml-parsing linq-to-xml

如果我有一个XML文件settings.xml,如下所示

<Root>
    <First>
    </First>
</Root>

我首先使用XDocument settings = XDocument.Load("settings.xml")

加载XML

我应该如何在节点First中插入XML节点并使用LINQ-to-XML保存它?

1 个答案:

答案 0 :(得分:2)

首先,您需要找到First元素。然后,您可以添加其他元素和属性。 在xml中找到元素的方法不止一种:ElementsDescendantsXPathSelectElement等。

var firstElement = settings.Descendants("First").Single();
firstElement.Add(new XElement("NewElement"));

settings.Save(fileName);
// or
var newXml = settings.ToString();

输出:

<Root>
  <First>
    <NewElement />
  </First>
</Root>

具有属性的元素:

firstElement.Add(
   new XElement("NewElement", new XAttribute("NewAttribute", "TestValue")));

输出:

<Root>
  <First>
    <NewElement NewAttribute="TestValue" />
  </First>
</Root>

[编辑] 奖金问题的答案。如果第一个元素不存在并且我想创建它该怎么办:

var root = settings.Element("Root");
var firstElement = root.Element("First");
if (firstElement == null)
{
    firstElement = new XElement("First");
    root.Add(firstElement);
}
firstElement.Add(new XElement("NewElement"));