修改配置文件c#中的密钥

时间:2015-02-12 06:10:55

标签: c# file config

我有一个读取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>

我知道我可以删除旧密钥和值并添加新密钥和值。 但它总是添加到最后一个索引。

我需要它与我做出更改的完全相同的索引。

抱歉这个坏的比喻和糟糕的英语。

1 个答案:

答案 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文件所做的更改。