我正在用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>