Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 保存现有文件:删除空值属性_C#_Save_Config - Fatal编程技术网

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

C# 保存现有文件:删除空值属性,c#,save,config,C#,Save,Config,我有这样一个配置文件: <?xml version="1.0" encoding="utf-8"?> <configuration> <appSettings> <add key="key1" value="value1" /> <add key="key2" value="" /> ... </appSettings> ... </configuration> 在此

我有这样一个配置文件:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <appSettings>
    <add key="key1" value="value1" />
    <add key="key2" value="" />
    ...
  </appSettings>    
  ...
</configuration>
在此之后,我得到以下结果:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <appSettings>
    <add key="key1" value="newvalue1" />
    <add key="key2"/>
    ...
  </appSettings>    
  ...
</configuration>
,则不会删除该属性。但我想知道为什么在第一个案例中它被移除了

谢谢


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

那么,你还没有提供足够的信息。我所有的答案都回答了你的问题。第一个答案中的两个值在功能上是等效的。因此,如果您希望查看“key2”值是否为=”,那么您可以简单地运行以下命令

if(appConfig.AppSettings.Settings["key2"] == null){
    //If this hits, that means <add key="key2" value="" />
}
if(appConfig.AppSettings.Settings[“key2”]==null){
//如果这个击中了,那意味着
}

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

谢谢,但我们通过将配置文件的值属性读取为xml来检查配置文件的另一部分,因此我们需要带空字符串的值属性谢谢更新。但是不可能将key2更新为空字符串。这是一个更新程序,用于更新配置文件的某些属性。@WernerKellens您的问题现在已经回答了3次。请更新您的问题以反映您真正想知道的内容,或将此标记为已接受,然后提出一个单独的问题。问题是,当我们调用save with ConfigurationSaveMode.Minimal(文档:仅导致将与继承值不同的属性写入配置文件)时,为什么会将其删除并且不会随ConfigurationSaveMode.Modified一起删除(文档:仅导致修改的属性写入配置文件,即使该值与继承的值相同)?阅读了Minimal的文档后,我认为他不应该更新key2,因为这个值没有更改。@WernerKellens最小保存模式会因为一个名为“短路”的编程属性而导致空值字符串被覆盖。在该方法解析您的配置并看到它是空值之后,它会以尽可能最小的方式更改配置。
appConfig.Save(ConfigurationSaveMode.Modified);
<add key="key2" value="" />
<add key="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);
if(appConfig.AppSettings.Settings["key2"] == null){
    //If this hits, that means <add key="key2" value="" />
}