Elemen XML berulang menyertakan indeks
Ketika Microsoft.Extensions.Configuration.Xml digunakan untuk membaca dokumen XML yang memiliki elemen XML berulang tanpa atribut, Configuration
entri yang Name
dibuat dengan elemen berulang ini sekarang memiliki indeks yang ditambahkan ke jalur konfigurasinya.
Versi yang diperkenalkan
.NET 6
Perilaku sebelumnya
Pertimbangkan cuplikan XML berikut yang menampilkan elemen berulang tanpa atribut yang membedakan Name
.
<settings>
<Data ConnectionString="TestConnectionString" />
<Data Provider="MySql" />
</settings>
<configuration>
<Level1>
<Level2 Key1="Value1" />
<Level2 Key2="Value2" />
</Level1>
</configuration>
Konfigurasi yang dibuat dari file XML ini adalah:
Data:ConnectionString = TestConnectionString
Data:Provider = MySql
dan
Level1:Level2:Key1 = Value1
Level1:Level2:Key2 = Value2
masing-masing.
Perilaku yang baru
Konfigurasi yang dibuat dari file XML di bagian Perilaku sebelumnya sekarang:
Data:0:ConnectionString = TestConnectionString
Data:1:Provider = MySql
dan
Level1:Level2:0:Key1 = Value1
Level1:Level2:1:Key2 = Value2
masing-masing.
Jenis perubahan yang melanggar
Perubahan ini dapat memengaruhi kompatibilitas biner.
Alasan untuk berubah
Perubahan ini diperkenalkan untuk sepenuhnya mendukung elemen XML berulang yang tidak memiliki Name
atribut. Perilaku sebelumnya hanya diizinkan untuk elemen berulang untuk mengatur nilai unik (menggunakan atribut atau subelemen). Jika elemen XML berulang memiliki atribut yang sama, pengecualian akan dilemparkan.
Tindakan yang direkomendasikan
Untuk mendapatkan perilaku asli, Anda dapat memperbarui XML untuk menciutkan dua atribut ke dalam elemen yang sama. Misalnya:
<configuration>
<Level1>
<Level2 Key1="Value1" Key2="Value2" />
</Level1>
</configuration>
Atau, Anda dapat memperbarui kode untuk mengharapkan indeks (seperti 0, 1, 2) di kunci IConfiguration
:
configRoot.GetSection("Level1:Level2")
Menjadi
configRoot.GetSection("Level1:Level2:0")
API yang Terpengaruh
- Microsoft.Extensions.Configuration.XmlConfigurationExtensions
- Microsoft.Extensions.Configuration.Xml.XmlStreamConfigurationProvider
- Microsoft.Extensions.Configuration.Xml.XmlConfigurationSource