使用Linq-to-xml插入并保存xml

本文关键字:保存 xml 插入 Linq-to-xml 使用 | 更新日期: 2023-09-27 17:58:55

如果我有一个类似下面的XML文件settings.xml

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

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

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

使用Linq-to-xml插入并保存xml

首先需要找到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>

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

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