我有一个读取app.config的程序,并将以编程方式更新配置文件。
例如:
<appSettings>
<add key = "card" value = "rare" />
<add key = "game" value = "poker" />
</appSettings>
更新配置文件后,它应该是这样的:
<appSettings>
<add key = "drink" value = "rare" />
<add key = "game" value = "poker" />
</appSettings>
我知道我可以删除旧密钥和值并添加新密钥和值。 但它总是添加到最后一个索引。
我需要它与我做出更改的完全相同的索引。
抱歉这个坏的比喻和糟糕的英语。
答案 0 :(得分:0)
class Program
{
static void Main(string[] args)
{
//UpdateSetting("language", "English");
UpdateAppSettings("card", "drink", "water");
}
public static void UpdateAppSettings(string OldKeyName, string KeyName, string KeyValue)
{
XmlDocument XmlDoc = new XmlDocument();
XmlDoc.Load(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile);
foreach (XmlElement xElement in XmlDoc.DocumentElement)
{
if (xElement.Name == "appSettings")
{
foreach (XmlNode xNode in xElement.ChildNodes)
{
if (xNode.Attributes[0].Value == OldKeyName)
{
xNode.Attributes[0].Value = KeyName;
xNode.Attributes[1].Value = KeyValue;
}
}
}
}
XmlDoc.Save(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile);
}
}
请记住不要从VS调试器测试它。您应该在发布模式下构建并打开,从该文件夹执行该二进制文件,以检查对该app.config appsettings文件所做的更改。