Я пишу программу на C #, которая будет проходить через кучу файлов config.xml и обновлять определенные элементы или добавлять их, если они не существуют. У меня есть часть вниз, которая обновляет элемент, если он существует с этим кодом:
XDocument xdoc = XDocument.Parse(ReadFile(_file));
XElement element = xdoc.Elements("project").Elements("logRotator")
.Elements("daysToKeep").Single();
element.Value = _DoRevert;
Но у меня возникают проблемы, когда я хочу добавить элемент, который не существует. Большую часть времени часть дерева находится на своем месте, и когда я использую свой код, он добавляет другое идентичное дерево, и это приводит к взрыву программы, читающей XML.
вот как я пытаюсь это сделать
xdoc.Element("project").Add(new XElement("logRotator", new XElement("daysToKeep", _day)));
и это приводит к такой структуре (тег numToKeep уже был там):
<project>
<logRotator>
<daysToKeep>10</daysToKeep>
</logRotator>
<logRotator>
<numToKeep>13</numToKeep>
</logRotator>
</project>
но это то, что я хочу
<project>
<logRotator>
<daysToKeep>10</daysToKeep>
<numToKeep>13</numToKeep>
</logRotator>
</project>