public static List<Machine> GetAll()
{
//Создаем ленейный список с пользовательским типом Machine
List<Machine> machines = new List<Machine>();
/*Открываем поток для прочтения существующего файла Machines.xml. Пока FileStream выполняет
чтение и запись в фоновом режиме, программа может исполняться и выполнять другой код.
*/
FileStream fs = new FileStream("..\\..\\Machines.xml",FileMode.Open);
//Создаем объект XmlDocument'а, с которым будем в дальнейшем работать
XmlDocument doc = new XmlDocument();
//Загружаем поток fs в XmlDocument doc
doc.Load(fs);
//myID создан для подсчета экземляров Machine, поступающих в лист machines.
int myID = 0;
/*
* Обрабатываем подряд каждый элемент с XML тегом Machine (<Machine Id="1">...</Machine>).
*/
foreach (XmlNode node in doc.GetElementsByTagName("Machine"))
{
//Создаем объект класса Machine
Machine machine = new Machine();
//Обрабатываем содержимое каждого элемента Machine, функция ChildNodes возвращает дочерние элементы.
foreach (XmlNode obj in node.ChildNodes)
{
//Переключатель для имени
switch (obj.Name)
{
//Получили дочерний тег <Name>...</Name>
case "Name":
//Получаем содержимое тега Name и приравниваем к переменной _name в классе machine
machine.Name = obj.InnerText;
break;
case "Model"://<Model>...</Model>
//Получаем содержимое тега Name и приравниваем к переменной _model в классе machine
machine.Model = obj.InnerText;
break;
case "DoorsNumber"://<DoorsNumber>...</DoorsNumber>
//Получаем содержимое тега DoorsNumber и приравниваем к переменной _doorsNumber в классе machine
machine.DoorsNumber = int.Parse(obj.InnerText);//типизируем obj.InnerText в int
break;
}
}
myID++;//инкремент
machine.Id = myID; //приравниваем к переменной _id в классе machine
machines.Add(machine); //Добавляем экземпляр класса, который содержит информацию, в список.
}
fs.Close();//Закрываем поток
return machines;//Возврощаем список всех машин
}
Ну, а все описание найдете в исходниках. Так как имеются ограничения по созданию новостей.