繰り返し XML 要素にインデックスが含まれる
Name
属性を使用せずに Microsoft.Extensions.Configuration.Xml を使用して繰り返し XML 要素を含む XML ドキュメントを読み取るときに、これらの繰り返し要素で作成された Configuration
エントリの構成パスにインデックスが追加されるようになりました。
導入されたバージョン
.NET 6
以前の動作
識別 Name
属性を持たない繰り返し要素を示す次の XML スニペットについて考えてみます。
<settings>
<Data ConnectionString="TestConnectionString" />
<Data Provider="MySql" />
</settings>
<configuration>
<Level1>
<Level2 Key1="Value1" />
<Level2 Key2="Value2" />
</Level1>
</configuration>
これらの XML ファイルから作成された構成は、それぞれ次のとおりです。
Data:ConnectionString = TestConnectionString
Data:Provider = MySql
および
Level1:Level2:Key1 = Value1
Level1:Level2:Key2 = Value2
です。
新しい動作
「以前の動作」セクションの XML ファイルから作成された構成は、それぞれ次のとおりです。
Data:0:ConnectionString = TestConnectionString
Data:1:Provider = MySql
および
Level1:Level2:0:Key1 = Value1
Level1:Level2:1:Key2 = Value2
です。
破壊的変更の種類
この変更は、バイナリの互換性に影響を与える可能性があります。
変更理由
この変更は、Name
属性を持たない繰り返し XML 要素を完全にサポートするために導入されました。 以前の動作では、(属性またはサブ要素を使用して) 繰り返し要素が一意の値を設定することのみが許可されていました。 繰り返し XML 要素に同じ属性がある場合は、例外がスローされました。
推奨アクション
以前の動作を取得するには、XML を更新して、2 つの属性を同じ要素にまとめることができます。 次に例を示します。
<configuration>
<Level1>
<Level2 Key1="Value1" Key2="Value2" />
</Level1>
</configuration>
または、IConfiguration
キー内のインデックス (0、1、2 など) を想定するようにコードを更新することもできます。
configRoot.GetSection("Level1:Level2")
結果
configRoot.GetSection("Level1:Level2:0")
影響を受ける API
- Microsoft.Extensions.Configuration.XmlConfigurationExtensions
- Microsoft.Extensions.Configuration.Xml.XmlStreamConfigurationProvider
- Microsoft.Extensions.Configuration.Xml.XmlConfigurationSource
関連項目
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET