Телеграм чат начинающих программистов. Общаемся и помогаем друг другу
Если ссылка не открывается, можно найти нас в поиске по чатам @rubyrush
или
пойти другим путем
В домашнем задании к прошлому уроку мы писали магазин, который торговал музыкой, фильмами и книжками. Не удобно и не правильно создавать их руками прямо в коде программы.
Научите магазин читать данные из отдельного XML-файла.
Например:
>ruby main.rb
Что хотите купить?
0: Книга «Приключения Тома Сойера», автор: Марк Твен — 1000 руб. [осталось: 5]
1: Книга «Воспоминания Шерлока Холмса», автор: Артур Конан Дойль — 1100 руб. [осталось: 1]
2: Диск Judas Priest — Turbo (Heavy Metal) — 500 руб. [осталось: 2]
3: Диск Judas Priest — Ram It Down (Heavy Metal) — 550 руб. [осталось: 3]
4: Фильм «Пролетая над грездом кукушки», реж. Милош Форман (1975) — 350 руб. [осталось: 3]
x. Покинуть магазин
x
Спасибо за покупки, с Вас 0 руб.
Для начала придумайте, в каком формате вы будете хранить ваши товары.
Предлагаем в таком:
<?xml version="1.0" encoding="utf-8"?>
<products>
<product price="1000" amount_available="5">
<book title="Приключения Тома Сойера" author_name="Марк Твен"></book>
</product>
</products>
Потом напишите у класса Product
статический метод read_from_xml
, который в качестве параметра принимает, например, имя файла со списком продуктов и передает его парсеру REXML
как мы это делали на уроке.
Любым удобным способом (документация REXML) достаньте из соответствующих тегов информацию о товаре и создайте экземпляр соответствующего класса на каждую запись в xml-файле.
А затем верните массив товаров.