无法将XML反序列化为列表

本文关键字:列表 反序列化 XML | 更新日期: 2023-09-27 18:14:52

我正在尝试将具有对象列表的XML反序列化为c#对象。我简化了XML,它的结构是这样的:

[Serializable, XmlRoot("Form")]
public class MyXML
{
    public string Name { get; set; }
    [XmlElement("Employee")]
    public List<Employee> employeeList;
}

public class Employee
{
    public string EmployeeNumber { get; set; }
    [XmlElement("Addresses")]
    public List<Addresses> AddressesList { get; set; }
}
public class Addresses
{
    public string Line1 { get; set; }
    public string Line2 { get; set; }
}

XML是这样的:

<Form >
  <Name>John</Name>
  <Employee>
    <EmployeeNumber>6</EmployeeNumber>
    <Addresses>
      <Line1>1123</Line1>
      <Line2>456</Line2>
    </Addresses>
    <Addresses>
      <Line1>567</Line1>
      <Line2>8798</Line2>
    </Addresses>
  </Employee>
</Form>

我可以成功序列化表单/雇员级别,但地址列表没有被反序列化并且是空的。知道为什么不行吗?

无法将XML反序列化为列表

你没有张贴你是如何试图反序列化,但以下代码为我工作,反序列化一切成功,而不改变任何在你的类:

string xml = File.ReadAllText("XMLFile1.xml");
XmlSerializer serializer = new XmlSerializer(typeof(MyXML));
using (StringReader reader = new StringReader(xml))
{
    var myXml = (MyXML)serializer.Deserialize(reader);
}