通过在c#中反序列化将xml转换为List

我有一个xml文件,我试图通过反序列化填充我的列表与数据。

我的xml在这里

   6BE0000-1159990808 + Blaine Bailey + Blaine Bailey 866-855-0800   9BA0000-1165353294 + Brian Boyd + Brian Boyd 203-245-1877   9280000-1164147562 + Brian Leahy + Brian Leahy 508-341-0955   

在这里,我给出了我的完整代码。 我只是不明白为什么我的代码不工作…我的代码中缺少什么……它没有给出错误但是列表没有填充。 所以请告诉我需要在代码中纠正哪个区域。

 [XmlTypeAttribute(AnonymousType = true)] public class CustomersData { [XmlArray(ElementName = "CustomerQueryRs")] [XmlArrayItem(ElementName = "CustomerRet")] public List Customers { get; set; } public CustomersData() { Customers = new List(); } } public class Customer { [XmlElement(ElementName = "ListID")] public string ListID { get; set; } [XmlElement(ElementName = "Name")] public string Name { get; set; } [XmlElement(ElementName = "FullName")] public string FullName { get; set; } [XmlElement(ElementName = "Phone")] public string Phone { get; set; } } 

这是我的desirialization代码

 private object DeserialzeXml(string xml) { var xmlSer = new XmlSerializer(typeof(CustomersData), new XmlRootAttribute("CustomerQueryRs")); var stringReader = new StringReader(xml); return xmlSer.Deserialize(stringReader); } 

请帮忙……

这应该工作:

 [XmlElement("CustomerRet")] public List Customers { get; set; } 

一个完整的例子:

 [XmlTypeAttribute(AnonymousType = true)] public class CustomersData { [XmlElement("CustomerRet")] public List Customers { get; set; } public CustomersData() { Customers = new List(); } } public class Customer { [XmlElement(ElementName = "ListID")] public string ListID { get; set; } [XmlElement(ElementName = "Name")] public string Name { get; set; } [XmlElement(ElementName = "FullName")] public string FullName { get; set; } [XmlElement(ElementName = "Phone")] public string Phone { get; set; } } class Program { static void Main() { var xml = @"   6BE0000-1159990808 + Blaine Bailey + Blaine Bailey 866-855-0800   9BA0000-1165353294 + Brian Boyd + Brian Boyd 203-245-1877   9280000-1164147562 + Brian Leahy + Brian Leahy 508-341-0955  "; var serializer = new XmlSerializer(typeof(CustomersData), new XmlRootAttribute("CustomerQueryRs")); using (var stringReader = new StringReader(xml)) using (var reader = XmlReader.Create(stringReader)) { var result = (CustomersData)serializer.Deserialize(reader); Console.WriteLine(result.Customers[1].FullName); } } } 

用于将xml转换为列表的可读代码

  string xmlString = System.IO.File.ReadAllText(@"C:\Users\user\Downloads\userDetail.xml"); List userDetail = (List)ConvertXmlStringtoObject>(xmlString); static T ConvertXmlStringtoObject(string xmlString) { T classObject; XmlSerializer xmlSerializer = new XmlSerializer(typeof(T)); using (StringReader stringReader = new StringReader(xmlString)) { classObject = (T)xmlSerializer.Deserialize(stringReader); } return classObject; }