c# - 反序列化存在于不同位置的 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。谢谢你。
解决方案
感谢您的建议@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);
}
}
推荐阅读
- python - Python 计算 gotos 和 USE_COMPUTED_GOTOS?
- web-scraping - Scraping Data on TradingView with BeautifulSoup
- html - How can I horizontally center grid items that have been wrapped onto a new row
- php - Creating zipped file of many pdfs automatically
- android - snapHelper.findSnapView() 总是返回 null
- bash - 将第二个参数传递给 Bash 函数
- image-processing - 如何提高训练和测试的准确性
- c++ - std::destroy 是基本类型的无操作吗?
- linq - linq 组消息仅显示最后的消息,就像应用程序所做的那样
- node.js - 尝试连接 Express 服务器以向 PostgreSQL 数据库发出 POST/GET 请求