XmlSerializer 和列表
XmlSerializer
可以将XML数据直接反序列化为List<T>
吗?让我们使用示例 XML 结构和相应的 C# 类来检查这一点。
示例 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>
C# 用户类:
<code class="language-csharp">public class User { [XmlElement("id")] public Int32 Id { get; set; } [XmlElement("name")] public String Name { get; set; } }</code>
List<User>
不直接支持直接反序列化为 XmlSerializer
。 然而,一个简单的解决方法可以实现这一点。
解决方案:包装列表
解决方案涉及创建一个包含 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>
通过使用这个UserListWrapper
类,反序列化变得简单。 XmlSerializer
将填充包装器内的 Users
列表。 反序列化后,您可以从包装器的 List<User>
属性访问 Users
。 也可以使用数组 (User[]
) 代替包装类中的列表,具体取决于您的偏好。
以上是XmlSerializer 可以将 XML 反序列化为列表吗?的详细内容。更多信息请关注PHP中文网其他相关文章!