Форум программистов, компьютерный форум, киберфорум
Ales'hon'ne
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  

Обёртка к классу TXmlDocument

Запись от Ales'hon'ne размещена 07.08.2012 в 19:41
Показов 3535 Комментарии 0

Не по теме:

Немного напоминает XPath, но всё же не оно.


Достоиства:
  • лаконичный код;
  • с первого взгляда понятно, к какому элементу происходит обращение;
  • удобный доступ по атрибутам;
Недостатки:
  • медленная работа;
  • неоптимальный код;
  • может работать не так, как ожидалось;
  • для совершения некоторых действий нужно пошаманить;
Кроме того, модуль наследует все достоинства и недостатки TXmlDocument.
Демонстрация работы модуля (скомпилированная программа: Project1.zip):

Что было (спёрто с Википедии):
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?xml version="1.0" encoding="UTF-8"?>
<recipe name="хлеб" preptime="5" cooktime="180">
  <title>Простой хлеб</title>
  <composition>
    <ingredient amount="3" unit="стакан">Мука</ingredient>
    <ingredient amount="0.25" unit="грамм">Дрожжи</ingredient>
    <ingredient amount="1.5" unit="стакан">Тёплая вода</ingredient>
    <ingredient amount="1" unit="чайная ложка">Соль</ingredient>
  </composition>
  <instructions>
    <step>Смешать все ингредиенты и тщательно замесить.</step>
    <step>Закрыть тканью и оставить на один час в тёплом помещении.</step>
    <step>Замесить ещё раз, положить на противень и поставить в духовку.</step>
  </instructions>
</recipe>
Что делалось:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
Введите имя файла:
> z:\tmp\1.xml
Файл найден!
Файл открыт!
> recipe\title:="Магический хлеб"
@null
> recipe\composition\ingredient|count
4
> recipe\composition\ingredient[4]:="Эликсир маны"
@null
> recipe\composition\ingredient[4].amount:="0.25"
@null
> recipe\composition\ingredient[4].unit:="колба"
@null
> recipe\warning:="Применять с осторожностью! Возможны сверхъестественные последствия."
@null
> @save
Сохранено!
> recipe\composition\ingredient[amount="0.25"]|count
2
> recipe\composition\ingredient[0]
Мука
> recipe\composition\ingredient[0].unit
стакан
> recipe\instructions\step|count
3
> recipe\instructions\step[0]
Смешать все ингредиенты и тщательно замесить.
> recipe\instructions\step[0].comment|exists
False
> recipe\instructions\step[1]
Закрыть тканью и оставить на один час в тёплом помещении.
> recipe\instructions\step[2]
Замесить ещё раз, положить на противень и поставить в духовку.
> recipe\instructions\step[3]|exists
False
> @exit
Что получилось:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?xml version="1.0" encoding="UTF-8"?>
<recipe name="хлеб" preptime="5" cooktime="180">
  <title>Магический хлеб</title>
  <composition>
    <ingredient amount="3" unit="стакан">Мука</ingredient>
    <ingredient amount="0.25" unit="грамм">Дрожжи</ingredient>
    <ingredient amount="1.5" unit="стакан">Тёплая вода</ingredient>
    <ingredient amount="1" unit="чайная ложка">Соль</ingredient>
    <ingredient amount="0.25" unit="колба">Эликсир маны</ingredient>
  </composition>
  <instructions>
    <step>Смешать все ингредиенты и тщательно замесить.</step>
    <step>Закрыть тканью и оставить на один час в тёплом помещении.</step>
    <step>Замесить ещё раз, положить на противень и поставить в духовку.</step>
  </instructions>
  <warning>Применять с осторожностью! Возможны сверхъестественные последствия.</warning>
</recipe>
Краткая документация
Создание:
Delphi
1
2
3
xml:=TXmlPathDoc.Create('c:\file.xml');//из файла
xml:=TXmlPathDoc.Create(stream,false);//из потока, если true, то конструктор освободит поток
xml:=TXmlPathDoc.CreateXml('<root><element v="1"/></root>')//из строки
Чтение данных:
Delphi
1
2
v:=xml.GetData('root\element.v');
v:=xml.ExecQuery('root\element.v');
Запись данных:
Delphi
1
2
xml.SetData('root\element.v',1);
xml.ExecQuery('root\element.v:="1"');
Сохранение:
Delphi
1
2
xml.SaveToFile('c:\file.xml');
xml.SaveToStream(stream);
Удаление:
Delphi
1
xml.DeleteElement('root\element');
Работа стандартными средствами:
Delphi
1
2
3
xml.Document;//IXmlDocument
xml.Root;//IXmlNode,=xml.Document.DocumentElement;
xml.GetNode('root\element');//IXmlNode
Вложения
Тип файла: zip XmlPath.zip (4.8 Кб, 253 просмотров)
Размещено в Без категории
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 0
Комментарии
 
Новые блоги и статьи
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru