Diberikan XML berikut:
<?xml version="1.0"?>
<user_list>
<user>
<id>1</id>
<name>Joe</name>
</user>
<user>
<id>2</id>
<name>John</name>
</user>
</user_list>
Dan kelas berikut:
public class User {
[XmlElement("id")]
public Int32 Id { get; set; }
[XmlElement("name")]
public String Name { get; set; }
}
Apakah mungkin untuk menggunakan XmlSerializer
deserialize xml menjadi List<User>
? Jika demikian, tipe atribut tambahan apa yang perlu saya gunakan, atau parameter tambahan apa yang perlu saya gunakan untuk membuat XmlSerializer
instance?
Array ( User[]
) akan dapat diterima, jika sedikit kurang disukai.
c#
serialization
xml-serialization
xml-deserialization
Daniel Schaffer
sumber
sumber
.Items
anggota.Jika Anda mendekorasi
User
kelas denganXmlType
agar sesuai dengan kapitalisasi yang diperlukan:Maka
XmlRootAttribute
padaXmlSerializer
ctor dapat memberikan root yang diinginkan dan memungkinkan pembacaan langsung ke Daftar <>:...
Kredit: berdasarkan jawaban dari YK1 .
sumber
XmlSerializer
harus di-cache secara statis dan digunakan kembali untuk menghindari kebocoran memori yang parah, lihat Memory Leak menggunakan StreamReader dan XmlSerializer untuk detailnya.Ya, itu akan membuat serial dan membatalkan daftar Daftar <>. Pastikan Anda menggunakan atribut [XmlArray] jika ragu.
Ini berfungsi baik dengan Serialize () dan Deserialize ().
sumber
Saya pikir saya telah menemukan cara yang lebih baik. Anda tidak harus memasukkan atribut ke dalam kelas Anda. Saya telah membuat dua metode untuk serialisasi dan deserialization yang mengambil daftar generik sebagai parameter.
Lihatlah (ini bekerja untuk saya):
Jadi Anda bisa membuat serial daftar apa pun yang Anda inginkan! Anda tidak perlu menentukan jenis daftar setiap kali.
sumber
List<MyClass>
elemen dokumen harus diberi namaArrayOfMyClass
.Ya, itu menghapus daftar ke Daftar <>. Tidak perlu menyimpannya dalam array dan membungkus / merangkumnya dalam daftar.
Kode deserializing,
sumber
Tidak yakin tentang Daftar <T> tetapi Array tentu saja bisa dilakukan. Dan sedikit keajaiban membuatnya sangat mudah untuk mencapai Daftar lagi.
sumber
Bagaimana tentang
Tidak terlalu mewah tetapi harus bekerja.
sumber