Bagikan melalui


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.

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

Lihat juga