# Домашнее задание № 2. Использование XML и модели-представления Qt Разработать программу, производящую отображение XML-файлов в виде иерархической таблицы. Основные требования: 1. xml-Файлы данных брать с Портала открытых данных Правительства Москвы (http://data.mos.ru). Скачать не менее четырех xml-файлов, например, данные по кафе, кофейням, барам и предприятиям быстрого обслуживания. 2. Программа должна предоставлять меню (QMenu), содержащее следующие пункты: * Файл: + Открыть (загрузка xml-файла данных) + Закрыть все (Очистить область вывода данных) + Выход (Закрыть программу) 3. Для открытия файлов использовать стандартное диалоговое окно выбора файлов (QFileDialog). 4. После открытия файла должен производиться его парсинг средствами Qt (на основе DOM или SAX). 5. Данные xml-файла должны добавляться в QTreeView, элементами которого являются подтаблицы. 6. Полагать, что структура файла известна и информация в дереве может отличаться от точной структуры xml-файла. 7. Отображение данных должно быть примерно в следующем формате: * Имя открытого файла без полного пути (например, cafe.xml) + Название организации 1 | Наименование | Значение | | ------ | ------ | | Административный округ | ... | | Район | ... | | Адрес | ... | | Телефон | ... | | Кол-во посадочных мест | ... | | Геоданные | ... | + Название организации 2 | Наименование | Значение | | ------ | ------ | | Административный округ | ... | | Район | ... | | Адрес | ... | | Телефон | ... | | Кол-во посадочных мест | ... | | Геоданные | ... | * Имя открытого файла без полного пути + Название организации 1 ... 8. Реализовать контекстное меню для корневого элемента (т.е. "Имя открытого файла без полного пути") с полем "Сделать файл активным". Текст активного узла сделать жирным. По умолчанию активным считать первый открытый файл. Для дочерних узлов меню срабатывать не должно. 9. Предусмотреть поле ввода XQuery-запросов и кнопку «Выполнить». Запрос выполнять к активному файлу. 10. Предоставить возможность загрузить запрос в поле из xq-файла (через кнопку «Загрузить» и стандартный диалог выбора файла QFileDialog). 11. Результаты выполнения запросов выводить в отдельном окне с аналогичной древовидной структурой. 12. Ошибки парсинга обрабатывать выводом окна критических сообщений.