Rumah >pembangunan bahagian belakang >C++ >Bolehkah XmlSerializer Deserialize XML ke dalam Senarai?

Bolehkah XmlSerializer Deserialize XML ke dalam Senarai?

Linda Hamilton
Linda Hamiltonasal
2025-01-13 09:11:44760semak imbas

Can XmlSerializer Deserialize XML into a List?

XmlSerializer and List Deserialisasi

Bolehkah XmlSerializer menyahsiri data XML terus ke dalam List<T>? Mari kita periksa ini dengan sampel struktur XML dan kelas C# yang sepadan.

Contoh XML:

<code class="language-xml"><?xml version="1.0"?>
<user_list>
  <user>
    <id>1</id>
    <name>Joe</name>
  </user>
  <user>
    <id>2</id>
    <name>John</name>
  </user>
</user_list></code>

Kelas Pengguna C#:

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

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

Penyahserialisasian terus ke dalam List<User> tidak disokong secara langsung oleh XmlSerializer. Walau bagaimanapun, penyelesaian mudah mencapai ini.

Penyelesaian: Membungkus Senarai

Penyelesaian melibatkan mencipta kelas pembalut yang mengandungi List<User>:

<code class="language-csharp">using System;
using System.Collections.Generic;
using System.Xml.Serialization;

[XmlRoot("user_list")]
public class UserListWrapper
{
    public UserListWrapper() { Users = new List<User>(); }
    [XmlElement("user")]
    public List<User> Users { get; set; }
}</code>

Dengan menggunakan kelas UserListWrapper ini, penyahserikatan menjadi mudah. XmlSerializer akan mengisi senarai Users dalam pembungkus. Selepas penyahserikatan, anda kemudian boleh mengakses List<User> daripada harta Users pembungkus. Tatasusunan (User[]) juga boleh digunakan dan bukannya senarai dalam kelas pembalut, bergantung pada pilihan anda.

Atas ialah kandungan terperinci Bolehkah XmlSerializer Deserialize XML ke dalam Senarai?. 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