【发布时间】:2010-06-09 15:12:32
【问题描述】:
我正在用 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>
【问题讨论】:
标签: c# xml linq linq-to-xml