首頁 > 後端開發 > C++ > 如何使用 XmlSerializer 將 XML 反序列化為清單?

如何使用 XmlSerializer 將 XML 反序列化為清單?

Barbara Streisand
發布: 2025-01-13 07:59:57
原創
140 人瀏覽過

How to Deserialize XML into a List Using XmlSerializer?

XmlSerializer 和清單反序列化:實用指南

XmlSerializer 類別提供了一種簡單的方法,將 XML 資料反序列化為各種資料類型,包括自訂物件清單。 本指南演示了實現此目的的兩種方法。

方法 1:使用包裝類別

要將 XML 反序列化為 List<User>,需要一個包裝類別來充當 XML 結構中的根元素。 考慮 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>
登入後複製

此類封裝了 User 物件的清單。 [XmlRoot("user_list")] 屬性將「user_list」指定為 XML 中的根元素。 [XmlElement("user")] 屬性將每個 User 物件對應到「user」元素。

接下來,定義User類別:

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

    [XmlElement("name")]
    public String Name { get; set; }
}</code>
登入後複製

最後使用XmlSerializer進行反序列化:

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

streamOrStringReader 替換為包含 XML 資料的 StreamStringReader 物件。

方法二:直接陣列反序列化

或者,您可以將清單直接嵌入到 User 類別中,從而簡化流程:

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

反序列化後變成:

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

Items 屬性現在包含一個 User 物件陣列。

選出正確的方法

包裝類別方法(方法1)提供了更大的靈活性,而直接數組方法(方法2)提供了更簡潔的解決方案。 最佳選擇取決於您的 XML 資料的特定結構和個人喜好。

以上是如何使用 XmlSerializer 將 XML 反序列化為清單?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板