Opakované elementy XML zahrnují index.

Pokud Microsoft.Extensions.Configuration.Xml se používá ke čtení dokumentu XML, který obsahuje opakované elementy XML bez atributu Name , Configuration položky vytvořené s těmito opakovanými prvky teď mají index připojený ke své cestě konfigurace.

Verze byla představena

.NET 6

Předchozí chování

Zvažte následující fragmenty kódu XML, které zobrazují opakující se elementy bez rozlišujícího Name atributu.

<settings>
  <Data ConnectionString="TestConnectionString" />
  <Data Provider="MySql" />
</settings>
<configuration>
    <Level1>
        <Level2 Key1="Value1" />
        <Level2 Key2="Value2" />
    </Level1>
</configuration>

Konfigurace vytvořené z těchto souborů XML:

Data:ConnectionString = TestConnectionString
Data:Provider = MySql

a

Level1:Level2:Key1 = Value1
Level1:Level2:Key2 = Value2

v pořadí.

Nové chování

Konfigurace vytvořené ze souborů XML v předchozí části chování jsou nyní:

Data:0:ConnectionString = TestConnectionString
Data:1:Provider = MySql

a

Level1:Level2:0:Key1 = Value1
Level1:Level2:1:Key2 = Value2

v pořadí.

Typ zásadní změny

Tato změna může ovlivnit binární kompatibilitu.

Důvod změny

Tato změna byla zavedena tak, aby plně podporovala opakované elementy XML, které nemají Name atribut. Pouze předchozí chování umožňovalo opakovaným prvkům nastavovat jedinečné hodnoty (pomocí atributů nebo dílčích prvků). Pokud opakované elementy XML měly stejný atribut, byla vyvolána výjimka.

Chcete-li získat původní chování, můžete aktualizovat XML tak, aby sbalil dva atributy do stejného elementu. Například:

<configuration>
    <Level1>
        <Level2 Key1="Value1" Key2="Value2" />
    </Level1>
</configuration>

Případně můžete kód aktualizovat tak, aby v klíčích očekával indexy (například 0, 1, 2):IConfiguration

configRoot.GetSection("Level1:Level2")

stane se

configRoot.GetSection("Level1:Level2:0")

Ovlivněná rozhraní API

Viz také