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

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

Barbara Streisand
Barbara Streisand原創
2025-01-13 07:59:57179瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn