Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Deserialize XML ke dalam Senarai Menggunakan XmlSerializer?

Bagaimana untuk Deserialize XML ke dalam Senarai Menggunakan XmlSerializer?

Barbara Streisand
Barbara Streisandasal
2025-01-13 07:59:57168semak imbas

How to Deserialize XML into a List Using XmlSerializer?

XmlSerializer and List Deserialisasi: Panduan Praktikal

Kelas XmlSerializer menawarkan kaedah mudah untuk menyahsiri data XML kepada pelbagai jenis data, termasuk senarai objek tersuai. Panduan ini menunjukkan dua pendekatan untuk mencapai matlamat ini.

Kaedah 1: Menggunakan Kelas Pembungkus

Untuk menyahsiri XML menjadi List<User>, kelas pembalut diperlukan untuk berfungsi sebagai elemen akar dalam struktur XML. Pertimbangkan kelas UserList:

<code class="language-csharp">[XmlRoot("user_list")]
public class UserList
{
    public UserList() { Items = new List<User>(); }
    [XmlElement("user")]
    public List<User> Items { get; set; }
}</code>

Kelas ini merangkum senarai User objek. Atribut [XmlRoot("user_list")] menetapkan "senarai_pengguna" sebagai elemen akar dalam XML. Atribut [XmlElement("user")] memetakan setiap User objek kepada elemen "pengguna".

Seterusnya, tentukan kelas User:

<code class="language-csharp">public class User
{
    [XmlElement("id")]
    public Int32 Id { get; set; }

    [XmlElement("name")]
    public String Name { get; set; }
}</code>

Akhir sekali, gunakan XmlSerializer untuk penyahserikatan:

<code class="language-csharp">XmlSerializer serializer = new XmlSerializer(typeof(UserList));
UserList userList = (UserList)serializer.Deserialize(streamOrStringReader);</code>

Ganti streamOrStringReader dengan objek Stream atau StringReader anda yang mengandungi data XML.

Kaedah 2: Penyahserikatan Tatasusunan Terus

Sebagai alternatif, anda boleh membenamkan senarai terus dalam kelas User, memudahkan proses:

<code class="language-csharp">[XmlRoot("user_list")]
public class User
{
    public User[] Items { get; set; }
}</code>

Deserialisasi kemudiannya menjadi:

<code class="language-csharp">XmlSerializer serializer = new XmlSerializer(typeof(User));
User userArray = (User)serializer.Deserialize(streamOrStringReader);</code>

Harta Items kini memegang tatasusunan User objek.

Memilih Kaedah yang Betul

Pendekatan kelas pembalut (Kaedah 1) memberikan fleksibiliti yang lebih besar, manakala kaedah tatasusunan langsung (Kaedah 2) menawarkan penyelesaian yang lebih ringkas. Pilihan terbaik bergantung pada struktur khusus data XML dan pilihan peribadi anda.

Atas ialah kandungan terperinci Bagaimana untuk Deserialize XML ke dalam Senarai Menggunakan XmlSerializer?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn