<?xml version="1.0" encoding="utf-8" ?><!-- 样本 --> <configuration> <configSections> <sectionGroup name="geoSettings"> <section name="summary" type="System.Configuration.NameValueSectionHandler" /> </sectionGroup> </configSections> <appSettings> <add key="Language" value="Ruby" /> <add key="Version" value="1.9.3" /> </appSettings> <geoSettings> <summary> <add key="Country" value="New Zealand" /> <add key="City" value="Christchurch" /> </summary> </geoSettings> </configuration>
更新自定义配置节点
增加一个key
var xmlDoc = new XmlDocument(); xmlDoc.Load(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile); // create new node <add key="Region" value="Canterbury" /> var nodeRegion = xmlDoc.CreateElement("add"); nodeRegion.SetAttribute("key", "Region"); nodeRegion.SetAttribute("value", "Canterbury"); xmlDoc.SelectSingleNode("//geoSettings/summary").AppendChild(nodeRegion); xmlDoc.Save(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile); ConfigurationManager.RefreshSection("geoSettings/summary");
编辑一个已存在的key的值
var xmlDoc = new XmlDocument(); xmlDoc.Load(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile); xmlDoc.SelectSingleNode("//geoSettings/summary/add[@key='Country']").Attributes["value"].Value = "Old Zeeland"; xmlDoc.Save(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile); ConfigurationManager.RefreshSection("geoSettings/summary");
删除一个已存在的key
var xmlDoc = new XmlDocument(); xmlDoc.Load(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile); XmlNode nodeCity = xmlDoc.SelectSingleNode("//geoSettings/summary/add[@key='City']"); nodeCity.ParentNode.RemoveChild(nodeCity); xmlDoc.Save(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile); ConfigurationManager.RefreshSection("geoSettings/summary");
原文:http://yizeng.me/2013/08/31/update-appsettings-and-custom-configuration-sections-in-appconfig-at-runtime/