Herhaalde XML-elementen bevatten index
Wanneer Microsoft.Extensions.Configuration.Xml wordt gebruikt voor het lezen van een XML-document met herhaalde XML-elementen zonder kenmerk Name
, hebben de Configuration
vermeldingen die met deze herhaalde elementen zijn gemaakt, nu een index toegevoegd aan het configuratiepad.
Versie geïntroduceerd
.NET 6
Vorig gedrag
Houd rekening met de volgende XML-fragmenten die herhaalde elementen weergeven zonder een onderscheidend Name
kenmerk.
<settings>
<Data ConnectionString="TestConnectionString" />
<Data Provider="MySql" />
</settings>
<configuration>
<Level1>
<Level2 Key1="Value1" />
<Level2 Key2="Value2" />
</Level1>
</configuration>
De configuraties die zijn gemaakt op basis van deze XML-bestanden zijn:
Data:ConnectionString = TestConnectionString
Data:Provider = MySql
en
Level1:Level2:Key1 = Value1
Level1:Level2:Key2 = Value2
tegoed.
Nieuw gedrag
De configuraties die zijn gemaakt op basis van de XML-bestanden in de sectie Vorig gedrag zijn nu:
Data:0:ConnectionString = TestConnectionString
Data:1:Provider = MySql
en
Level1:Level2:0:Key1 = Value1
Level1:Level2:1:Key2 = Value2
tegoed.
Type wijziging die fouten veroorzaken
Deze wijziging kan van invloed zijn op binaire compatibiliteit.
Reden voor wijziging
Deze wijziging is geïntroduceerd om herhaalde XML-elementen die geen kenmerk hebben Name
, volledig te ondersteunen. Het vorige gedrag is alleen toegestaan voor herhaalde elementen om unieke waarden in te stellen (met behulp van kenmerken of subelementen). Als herhaalde XML-elementen hetzelfde kenmerk hadden, is er een uitzondering opgetreden.
Aanbevolen actie
Als u het oorspronkelijke gedrag wilt ophalen, kunt u uw XML bijwerken om de twee kenmerken in hetzelfde element samen te vouwen. Voorbeeld:
<configuration>
<Level1>
<Level2 Key1="Value1" Key2="Value2" />
</Level1>
</configuration>
U kunt uw code ook bijwerken om indexen (zoals 0, 1, 2) in de IConfiguration
sleutels te verwachten:
configRoot.GetSection("Level1:Level2")
Wordt
configRoot.GetSection("Level1:Level2:0")
Betrokken API's
- Microsoft.Extensions.Configuration.XmlConfigurationExtensions
- Microsoft.Extensions.Configuration.Xml.XmlStreamConfigurationProvider
- Microsoft.Extensions.Configuration.Xml.XmlConfigurationSource