Compartilhar via


Elementos XML repetidos incluem índice

Quando Microsoft.Extensions.Configuration.Xml é usado para ler um documento XML que tem elementos XML repetidos sem um Name atributo, as Configuration entradas criadas com esses elementos repetidos agora têm um índice acrescentado ao caminho de configuração.

Versão introduzida

.NET 6

Comportamento anterior

Considere os snippets XML a seguir que mostram elementos repetidos sem um atributo diferenciante Name .

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

As configurações criadas a partir desses arquivos XML foram:

Data:ConnectionString = TestConnectionString
Data:Provider = MySql

e

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

respetivamente.

Novo comportamento

As configurações criadas a partir dos arquivos XML na seção Comportamento anterior agora são:

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

e

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

respetivamente.

Tipo de mudança disruptiva

Essa alteração pode afetar a compatibilidade binária.

Motivo da alteração

Essa alteração foi introduzida para dar suporte total a elementos XML repetidos que não têm um Name atributo. O comportamento anterior só permitia que elementos repetidos definissem valores exclusivos (usando atributos ou subelementos). Se elementos XML repetidos tiverem o mesmo atributo, uma exceção será gerada.

Para obter o comportamento original, você pode atualizar seu XML para recolher os dois atributos no mesmo elemento. Por exemplo:

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

Como alternativa, você pode atualizar seu código para esperar índices (como 0, 1, 2) nas IConfiguration chaves:

configRoot.GetSection("Level1:Level2")

se torna

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

APIs afetadas

Consulte também