Delen via


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.

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

Zie ook