保存现有文件:删除空值属性

时间:2017-12-07 13:50:02

标签: c# save config

我有这样的配置文件:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <appSettings>
    <add key="key1" value="value1" />
    <add key="key2" value="" />
    ...
  </appSettings>    
  ...
</configuration>

我读取配置,更改key1的值并保存配置

System.Configuration.Configuration appConfig = ConfigurationManager.OpenExeConfiguration(Configuration.ConfigFile.Replace(".config", string.Empty));
appConfig.AppSettings.Settings["key1].Value = "newvalue1";
appConfig.Save(ConfigurationSaveMode.Minimal);

在此之后我得到以下结果:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <appSettings>
    <add key="key1" value="newvalue1" />
    <add key="key2"/>
    ...
  </appSettings>    
  ...
</configuration>

为什么键“key2”的'empty'值属性被删除了? 当我尝试

appConfig.Save(ConfigurationSaveMode.Modified);

,不删除该属性。但我想知道为什么它在第一种情况下被删除了?

由于

1 个答案:

答案 0 :(得分:1)

<add key="key2" value="" />

<add key="key2" />

在功能上都是平等的。带或不带标记的key2的值是一个空字符串变量,它等同于空字符串。

编辑以反映注释:只需在同一语句中为key2指定空字符串。

System.Configuration.Configuration appConfig =  ConfigurationManager.OpenExeConfiguration(Configuration.ConfigFile.Replace(".config", string.Empty));
appConfig.AppSettings.Settings["key1"].Value = "newvalue1";
appConfig.AppSettings.Settings["key2"].Value = "";
appConfig.Save(ConfigurationSaveMode.Minimal);

第二次评论第二次评论:

那么,你还没有提供足够的信息。我的所有答案都回答了你的问题。第一个答案中的两个值在功能上是等效的。因此,如果你想看看&#34; key2&#34;值=&#34;&#34;然后你可以简单地运行以下

if(appConfig.AppSettings.Settings["key2"] == null){
    //If this hits, that means <add key="key2" value="" />
}

请研究如何提出一个好问题并调整问题,以反映您真正想要问的问题。