Вот рабочая версия. Я заменил метки XmlElementAttribute на XmlElement, потому что в xml значения StockNumber, Make и Model являются элементами, а не атрибутами. Также я удалил reader.ReadToEnd (); (функция читает весь поток и возвращает строку, поэтому функция Deserialze () больше не может использовать читателя ... позиция была в конце потока). Я также взял несколько прав с именованием:).
Вот классы:
[Serializable()]
public class Car
{
[System.Xml.Serialization.XmlElement("StockNumber")]
public string StockNumber { get; set; }
[System.Xml.Serialization.XmlElement("Make")]
public string Make { get; set; }
[System.Xml.Serialization.XmlElement("Model")]
public string Model { get; set; }
}
[Serializable()]
[System.Xml.Serialization.XmlRoot("CarCollection")]
public class CarCollection
{
[XmlArray("Cars")]
[XmlArrayItem("Car", typeof(Car))]
public Car[] Car { get; set; }
}
Функция десериализации:
CarCollection cars = null;
string path = "cars.xml";
XmlSerializer serializer = new XmlSerializer(typeof(CarCollection));
StreamReader reader = new StreamReader(path);
cars = (CarCollection)serializer.Deserialize(reader);
reader.Close();
И слегка измененный xml (мне нужно было добавить новый элемент для переноса & lt; Cars & gt; ... Net является придирчивым к десериализации массивов):
1020
Nissan
Sentra
1010
Toyota
Corolla
1111
Honda
Accord