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.
Doporučená akce
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
- Microsoft.Extensions.Configuration.XmlConfigurationExtensions
- Microsoft.Extensions.Configuration.Xml.XmlStreamConfigurationProvider
- Microsoft.Extensions.Configuration.Xml.XmlConfigurationSource