Sdílet prostřednictvím


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.

Zavedená verze

.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 uvedeném 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 uvedeném 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. Předchozí chování povoleno pouze pro opakované prvky nastavit jedinečné hodnoty (pomocí atributů nebo dílčích prvků). Pokud opakované elementy XML měly stejný atribut, byla vyvolán výjimka.

Chcete-li získat původní chování, můžete aktualizovat XML tak, aby sbalil dva atributy do stejného elementu. Pří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é