.NET Core怎么读取XML配置 .NET Core配置教程

.NET Core 6+可通过Microsoft.Extensions.Configuration.Xml包支持XML配置,需用AddXmlFile加载,根节点必须为,配置项以冒号分隔路径表示,不支持属性值和复杂嵌套。

在 .NET Core 中,XML 配置文件不是默认支持的格式(默认是 JSON),但可以通过自定义 IConfigurationProvider 或使用第三方库来读取 XML 配置。官方 SDK 不直接内置 XML 配置源,但你可以轻松扩展。

添加 XML 配置支持(推荐方式)

.NET Core 6+ 支持通过 AddXmlFile 扩展方法加载 XML 配置,前提是引入 Microsoft.Extensions.Configuration.Xml 包:

  • 在项目中安装 NuGet 包:Microsoft.Extensions.Configuration.Xml
  • Program.cs 中注册 XML 配置源(顺序影响覆盖逻辑):
示例:
var builder = WebApplication.CreateBuilder(args);

// 加载 appsettings.xml(需放在项目根目录,设为“复制到输出目录”)
builder.Configuration.AddXmlFile("appsettings.xml", optional: true, reloadOnChange: true);

// 或指定完整路径
// builder.Configuration.AddXmlFile("config/app.config.xml", optional: false);

XML 配置文件格式要求

.NET Core 的 XML 配置解析器要求结构扁平、层级清晰,不支持复杂嵌套或属性混合写法。推荐用以下格式:


  
    Server=localhost;Database=MyApp;Trusted_Connection=true
  
  
    
      Information
      Warning
    
  
  
    true
    false
  

注意:根节点必须是 ;每个配置项用层级路径表示(如 FeatureFlags:EnableCaching);不支持 XML 属性作为配置值(例如 不会被识别)。

在代码中读取 XML 配置值

和读取 JSON 配置完全一致,使用 IConfiguration 接口即可:

  • 注入 IConfiguration 到服务或控制器中
  • 用索引器或 GetSection() 获取节点
  • GetValue() 或绑定 POCO 类
示例:
// 读取单个值
string connStr = configuration["ConnectionStrings:DefaultConnection"];

// 读取布尔值
bool enableCache = configuration.GetValue("FeatureFlags:EnableCaching");

// 绑定到类
var features = configuration.GetSection("FeatureFlags").Get();

常见问题与注意事项

XML 配置虽可用,但实践中要注意几个关键点:

  • XML 文件需设置“复制到输出目录”属性(CopyToOutputDirectory),否则运行时找不到
  • 多个配置源(如 JSON + XML)同时存在时,后添加的源会覆盖前面同名键的值
  • XML 不支持数组语法(如 https://a.comhttps://b.com),建议改用 JSON 或用冒号分隔的键名模拟(如 Urls:0, Urls:1
  • 如果需要更灵活的 XML 解析(如带属性、命名空间、复杂结构),建议用 System.Xml.Linq 手动解析,再映射到配置模型,而非依赖配置系统