I am trying to deserialize an xml file for a .NET object by doing something like:
CarCollection myCarCollection = null; string path = "CarCollection.xml"; XmlSerializer serializer = new XmlSerializer(typeof(CarCollection)); StreamReader reader = new StreamReader(path); myCarCollection= (CarCollection)serializer.Deserialize(reader); reader.Close();
Here is the xml file I'm using:
<?xml version="1.0" encoding="utf-8" ?> <CarCollection> <Car ID="A"> <CarType Make="Ford" Model="Focus" /> <CarOwner Name="Tom"> <Report Type="Service"> <ReportList> <Date>20-08-2010</Date> </ReportList> </Report> </CarOwner> </Car> <Car ID="B"> <CarType Make="Vauxhall " Model="Corsa" /> <CarOwner Name="Joe"> <Report Type="Service"> <ReportList> <Date>10-10-2008</Date> <Date>10-10-2009</Date> <Date>10-10-2010</Date> </ReportList> </Report> <Report Type="Accident"> <ReportList> <Date>20-01-2011</Date> </ReportList> </Report> </CarOwner> </Car> </CarCollection>
I tried a lot of things but can't make it work.
Can someone please help me how to do deserialize for a .NET object.
Here are the C # objects
[Serializable()] [XmlRoot("CarCollection")] public class CarCollection { [XmlArray("Car")] [XmlArrayItem("Car", typeof(Car))] public Car[] Cars { get; set; } } [Serializable()] public class Car { [XmlAttribute("Make")] public string CarMakeType { get; set; } [XmlAttribute("Model")] public string CarModelType { get; set; } [XmlArray("CarOwner")] [XmlArrayItem("CarOwner", typeof(CarOwner))] public CarOwner[] CarOwners { get; set; } } [Serializable()] public class CarOwner { [XmlAttribute("Name")] public string Name { get; set; } [XmlArray("Report")] [XmlArrayItem("Report", typeof(Report))] public Report[] Reports { get; set; } } [Serializable()] public class Report { [XmlAttribute("Type")] public string Type { get; set; } [XmlArray("Report")] [XmlArrayItem("Report", typeof(DateTime))] public DateTime[] Reports { get; set; } }
Ray
source share