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

Saving existing file: empty value attribute is removed

我有一个这样的配置文件:

<?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);

,属性没有被移除。但是我想知道第一种情况为什么去掉了?

谢谢

<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);

第二条评论的第二次编辑:

那么,您提供的信息还不够。我所有的回答都回答了你的问题。第一个答案中的两个值在功能上是等效的。因此,如果您想查看 "key2" value = "" 那么您可以简单地 运行 以下

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

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