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)
Похожие статьи: