You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用RestSharp解析XML格式响应并填充List<Employee>集合

如何将XML响应映射到List集合?

嗨,我来帮你搞定这个XML解析的问题!首先,你得先调整一下你的Employee类——目前它的字段是私有的,不管用哪种解析方式都没法直接访问,所以先改成公共属性:

public class Employee 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
}

接下来给你两种常用的实现方案,你可以根据自己的需求选择:

方案一:手动解析(Linq to XML)

这种方式灵活直接,不需要额外定义响应实体类,适合快速处理简单XML结构:

private void reqEmployee(Employee empl) 
{ 
    // 你的原有请求代码...
    IRestResponse response = client.Execute(request);

    // 开始解析XML响应
    if (!string.IsNullOrEmpty(response.Content))
    {
        // 处理XML的默认命名空间
        XNamespace ns = "http://test.dev.com/";
        XDocument doc = XDocument.Parse(response.Content);

        // 遍历所有Employee节点,转换为Employee对象
        List<Employee> employeeList = doc.Descendants(ns + "Employee")
            .Select(e => new Employee
            {
                Id = int.Parse(e.Element(ns + "Id").Value),
                Name = e.Element(ns + "Name").Value
            })
            .ToList();

        // 现在employeeList就是你需要的集合了
    }
}

方案二:使用XmlSerializer序列化

如果你的XML结构固定,这种方式更优雅,通过定义响应对应的实体类来自动映射:

首先,需要定义和XML结构匹配的响应实体类(注意要指定正确的命名空间):

[XmlRoot("GetEmployeeResponse", Namespace = "http://test.dev.com/")]
public class GetEmployeeResponse
{
    [XmlElement("PropertyStatus")]
    public PropertyStatus PropertyStatus { get; set; }
}

public class PropertyStatus
{
    [XmlElement("Employee")]
    public List<Employee> Employees { get; set; }
}

然后在请求方法中添加解析代码:

private void reqEmployee(Employee empl) 
{ 
    // 你的原有请求代码...
    IRestResponse response = client.Execute(request);

    // 开始序列化解析
    if (!string.IsNullOrEmpty(response.Content))
    {
        XmlSerializer serializer = new XmlSerializer(typeof(GetEmployeeResponse));
        using (StringReader reader = new StringReader(response.Content))
        {
            GetEmployeeResponse responseObj = (GetEmployeeResponse)serializer.Deserialize(reader);
            List<Employee> employeeList = responseObj.PropertyStatus.Employees;

            // 这里就得到了填充好的Employee集合
        }
    }
}

注意事项

  • 一定要处理XML的默认命名空间(http://test.dev.com/),不管是手动解析还是序列化,忽略命名空间会导致找不到对应的节点。
  • 确保Employee类的属性名称和XML节点名称完全匹配(比如XML里是<Id>,类里就是Id,大小写敏感)。

内容的提问来源于stack exchange,提问作者Chriz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 08:17:28