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 資料的 Stream
或 StringReader
物件。
方法二:直接陣列反序列化
或者,您可以將清單直接嵌入到 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中文網其他相關文章!