Вставка и сохранение XML с использованием Linq в XML - PullRequest
1 голос
/ 13 июня 2011

Если у меня есть файл XML settings.xml, как показано ниже

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

Сначала я загружаю XML, используя XDocument settings = XDocument.Load("settings.xml")

Как мне вставить узел XML внутри узла First и сохранить его с помощью LINQ-to-XML?

1 Ответ

2 голосов
/ 13 июня 2011

Сначала вам нужно найти элемент First.Затем вы можете добавить другие элементы и атрибуты к нему.Существует несколько способов найти элемент в XML: Elements, Descendants, XPathSelectElement и т. Д.

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