C# 无法将XML反序列化到列表中

C# 无法将XML反序列化到列表中,c#,xml,deserialization,C#,Xml,Deserialization,我正在尝试将包含对象列表的XML反序列化为C#对象。我简化了XML,它的结构如下所示: [Serializable, XmlRoot("Form")] public class MyXML { public string Name { get; set; } [XmlElement("Employee")] public List<Employee> employeeList; } public class Employee { public s

我正在尝试将包含对象列表的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; }
}
<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>
[Serializable,XmlRoot(“表单”)]
公共类MyXML
{
公共字符串名称{get;set;}
[XmlElement(“员工”)]
公开名单雇员名单;
}
公营雇员
{
公共字符串EmployeeNumber{get;set;}
[XmlElement(“地址”)]
公共列表地址列表{get;set;}
}
公共类地址
{
公共字符串Line1{get;set;}
公共字符串第2行{get;set;}
}
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; }
}
<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>

约翰
6.
1123
456
567
8798

我可以成功序列化表单/员工级别,但地址列表未反序列化且为空。你知道它为什么不起作用吗?

你没有发布你是如何尝试反序列化的,但是下面的代码为我成功地反序列化了所有内容,而没有更改你的类中的任何内容:

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

谢谢这与我使用的反序列化方法相同。但它仍然没有生成地址对象列表。实际上我知道我做错了什么。我在[XmlElement(“地址”)上使用了不正确的属性。我使用的是类的名称,而不是XML中元素的名称(在我的XML中,它们有不同的名称)。@user1562497:ah,酷。我本打算要求提供完整的XML,但很高兴您已经发现了这个问题