首页 > 解决方案 > 反序列化存在于不同位置的 xml 配置文件

问题描述

我正在尝试反序列化存储在 %LOCALAPPDATA%\Configuration\Configuration.XML 中的 XML 配置文件。我想读取键值部分并将其存储在局部变量中。XML 文件如下所示:

<?xml version="1.0" encoding="utf-8" ?>
    <configuration>
        <appSettings>
            <add key="FolderPath" value="C:\\Data" />
            <add key="Name" value="xxx" />
            <add key="Type" value="xxx" />
        </appSettings>
    </configuration>

ConfigurationManager.Appsettings.Get("FolderPath")不起作用,因为 xml 文件位于不同的位置。所以我尝试了以下代码,但它不起作用。

var configFile = Path.Combine(Environment.GetEnvironmentVariable("LocalAppData"), "Configuration", "Configuration.XML")
var configuration = ConfigurationManager.OpenExeConfiguration(configFile);
var  appSettings = configuration.GetSection("appSettings").SectionInformation;

请帮我阅读如上所示的 configuration.XML。谢谢你。

标签: c#xml

解决方案


感谢您的建议@jdweng。我能够解决这个问题

var configFile = Path.Combine(Environment.GetEnvironmentVariable("LOCALAPPDATA"),  "Configuration", "Configuration.XML"));
if (File.Exists(configFile))
{
   ConfigurationDetails = new Dictionary<string, string>();
   XDocument doc = XDocument.Load(configFile);
   var elements = doc.Descendants("add");
   foreach (var element in elements)
   {
      ConfigurationDetails.Add(element.Attribute("key").Value, element.Attribute("value").Value);
   }
}

推荐阅读