Наш чатик

Телеграм чат начинающих программистов. Общаемся и помогаем друг другу

Если ссылка не открывается, можно найти нас в поиске по чатам @rubyrush или пойти другим путем

XML магазин

В домашнем задании к прошлому уроку мы писали магазин, который торговал музыкой, фильмами и книжками. Не удобно и не правильно создавать их руками прямо в коде программы.

Научите магазин читать данные из отдельного 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-файле.

А затем верните массив товаров.