Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

Возможности тулкита GTK+ и сопутствующих библиотек


Автор: А.Панин
Дата публикации: 3 декабря 2014 г.

Простой механизм разбора документов формата XML

2. Пример использования

В качестве примера возьмем все тот же простейший текстовый редактор из предыдущей статьи, но в данном случае значения параметров конфигурации приложения будут сохраняться не в файле, содержащим пары ключ-значение, а в файле документа формата XML. При запуске приложения будет осуществляться разбор этого файла, а перед завершением работы - формирование текстового представления документа формата XML и запись этого представления в файл на диск. В рамках приложения могут настраиваться следующие параметры:
  1. Размер и название шрифта
  2. Цвет шрифта
  3. Режим переноса строк текста
  4. Указание на необходимость открытия последнего открытого файла при запуске приложения

Для реализации возможности открытия последнего открытого файла при запуске приложения также производится сохранение полного пути к этому файлу.

Как и в примере из предыдущей главы, в данном примере файл конфигурации формата XML сохраняется не в директории для хранения пользовательских файлов конфигурации, а в директории для хранения временных файлов, так как при формировании пути к файлу конфигурации формата XML была умышленно использована функция g_get_tmp_dir() вместо функции g_get_user_config_dir().

Исходный код приложения представлен в Листинге 1, "Код приложения", а также находится в архиве gmarkup.tar.gz вместе с файлом Makefile для упрощения сборки. Для лучшего понимания в коде используются комментарии. Особое внимание следует уделить функциям открытия и разбора файла конфигурации формата XML (application_open_config_file()), начала разбора элемента (application_xml_get_start_element()), разбора текста (application_xml_get_value()), окончания разбора элемента (application_xml_get_end_element()), обратной замены стандартных сущностей на соответствующие им символы (application_xml_markup_unescape()), закрытия файла конфигурации формата XML и записи данных конфигурации на диск (application_close_config_file()), вывода значений параметров конфигурации приложения в диалоге для их редактирования (application_show_settings()), применения параметров конфигурации приложения (application_apply_settings()), сохранения параметров конфигурации приложения (application_save_settings()) и сохранения пути к последнему открытому файлу (application_save_opened_file()). Вы можете осуществить сборку приложения либо просто перейдя в директорию с извлеченным из архива файлом исходного кода и введя команду make, либо воспользовавшись следующей командой:
gcc `pkg-config --cflags --libs gtk+-3.0` gmarkup.c -o gmarkup

Листинг 1. Код приложения

Механизм для разбора документов формата XML полностью реализован в рамках библиотеки GLib, поэтому совершенно не обязательно использовать тулкит GTK+ для его задействования. В случае связывания приложения с библиотекой GLib для его компиляции может использоваться следующая команда:
gcc `pkg-config --cflags --libs glib-2.0` <имя файла исходного кода> -o <имя исполняемого файла>

На иллюстрациях ниже представлены снимки главного окна приложения и диалога для редактирования значений параметров конфигурации приложения.

Главное окно приложения
Рисунок 1. Главное окно приложения

Диалог для редактирования значений параметров конфигурации приложения
Рисунок 2. Диалог для редактирования значений параметров конфигурации приложения

Заключение

Механизм разбора документов формата XML может использоваться при работе как с документами, созданными самим приложением, так и с документами, созданными сторонними приложениями в случае соблюдения ряда условий. При этом для работы со сложными документами формата XML все-таки рекомендуется использовать полнофункциональные библиотеки. Данный механизм может вполне успешно применяться для сохранения и загрузки данных конфигурации приложения и несмотря на то, что он более сложен в использовании, чем механизм для работы с файлами, содержащими пары ключ-значение, он позволяет лучше структурировать данные приложения. В следующей же статье будет рассматриваться механизм для работы с данными конфигурации приложений, используемый приложениями из состава окружения рабочего стола GNOME.


Следующая статья : Специализированный механизм для работы с данными конфигурации приложений.