首页 >后端开发 >C++ >XmlSerializer 可以将 XML 反序列化为列表吗?

XmlSerializer 可以将 XML 反序列化为列表吗?

Linda Hamilton
Linda Hamilton原创
2025-01-13 09:11:44796浏览

Can XmlSerializer Deserialize XML into a List?

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn