Delphi→ Использование XML в Delphi (msxml_tlb)

Авг 24, 2011


У многих программистов Delphi, сохранение настроек ассоциируется с использованием INIфайлов в своих программах. Применение данного метода, в более менее серьезных проектах, необходимо избегать, так как это ограничивает в гибкости, что препятствует дальнейшему расширению программы. Стоит сказать, что такой подход достаточно популярен, в силу своей простоты использования и наличия встроенных средств в среду разработки.

Тем не менее, идеальным вариантом для хранения настроек программы являются структурированные XML файлы. Их преимущество заключается в том, что количество параметров может быть не фиксированным. Чтобы лучше это понять, рассмотрим конкретный пример.

В программе USearch, при клике по записи, появляется контекстное меню, в котором отображается список пунктов. Эти пункты являются командами, которые в свою очередь загружаются из файла настроек. В случае, если бы настройки хранились в INI файле, то программа могла бы сохранять и загружать определенное количество команд, например 10 или 50. Как только потребуется большее значение, придется заново переписывать код и соответственно повторно компилировать его.


Применяя подход с использованием XML файлов, у нас появится возможность загружать все параметры секции динамически. Ко всему этому, файл конфигурации станет более изящным, без избыточной нумерации параметров. Однако, стандартные средства для работы с XML в Delphi имеют множество недостатков, поэтому рекомендую использовать стандартную библиотеку MSXML. Обычно она по-умолчанию входит в состав операционных систем семейства Windows.


Для подключения MSXML, нам необходимо сформировать файл интерфейса со списком всех функций, импортировав его из COM-сервера. Как импортировать интерфейс написано не мало подробных статей, я же предлагаю вам скачать файл MSXML2_TLB.PAS уже готовый к использованию. После того, как файл будет скачан, разместите его рядом с вашим проектом, либо закиньте в папку lib среды Delphi. Таким образом, все создаваемые программы смогут использовать модуль MSXML, достаточно лишь дописать в uses строчку MSXML2_TLB.

Для наглядности, рассмотрим следующий пример применения этой библиотеки:

procedure LoadData;
var
  XMLDoc: DOMDocument;
  Root: IXMLDOMElement;
begin
  XMLDoc := CoDOMDocument.Create;
  XMLDoc.Load('settins.xml');
  Root := XMLDoc.DocumentElement;
  ShowMessage(Root.SelectSingleNode('size/width').Text);
  Root := nil;
  XMLDoc := nil;
end;

Сначала создается экземпляр класса DOMDocument, после чего в память загружается содержимое файла settings.xml. Так как по стандарту любой XML файл должен содержать корневой тэг (в данном случае config), то нам необходимо его получить, используя функцию DocumentElement. Затем происходит вывод содержимого между тэгами <width></width>, которые в свою очередь находятся между тэгами <size></size>. Таким образом из файла settings.xml, наш метод выведет в MessageBox текст «100px».

<?xml version="1.0" encoding="utf-8"?>
<config>
	<size>
		<height>500px</height>
		<width>100px</width>
	</size>
</config>

Здесь применен метод SelectSingleNode, который в качестве параметра принимает строку XPath. Рекомендую изучить язык запросов XPath, так как овладев им можно творить поистине удивительные вещи.
Скачать msxml2_tlb.zip(msxml_tlb.pas для Delphi)

Похожие статьи:

  1. Компонент Antigate для Delphi
  2. Привязка к железу в Delphi
  3. Установка Indy на Portable Delphi
  4. Взаимодействие Oracle и Delphi
  5. Portable Delphi

Добавить комментарий

Ваш адрес email не будет опубликован.