Для поиска по документу XML используется язык запросов XPath. Язык позволяет осуществлять навигацию по древовидной структуре XML-документа, указывая путь к искомому узлу.
«1С:Предприятие.Элемент Скрипт» позволяет использовать все стандартные средства поиска с использованием XPath
. Для этого в «Скрипте» предоставлены специальные типы встроенного языка:
ПоискXPath — основной тип для поиска по документу XML с помощью XPath
. В качестве аргумента принимает ВыражениеXPath — путь к искомому узлу. Для выражения можно указать соответствие префиксов и пространств имен, используемых в документе XML. Для поиска можно использовать параметры. Для типа ПоискXPath
доступны различные методы, например Найти, который осуществляет поиск всех узлов по указанному выражению, или НайтиПервый, который выполняет поиск до первого найденного узла.
Также доступен потоковый поиск по документу XML. Данный вариант является менее ресурсоемким, но имеет ограничения в синтаксисе.
В «Скр ипте» поддерживаются следующие версии XPath
:
Реализация XPath 3.1
в «Скрипте» не поддерживает:
- schema-aware XPath
- multi-threaded XPath
- streamable XPath
Пример
Для следующего документа в формате XML:
<?xml version="1.0" encoding="UTF-8"?>
<Серверы>
<Сервер URL="localhost:9090">
<Проекты>
<Проект Название="Проект Демо CRM">
<Приложение Название="Демо CRM" Сборка="1.0"/>
<Приложение Название="Демонстрационное приложение" Сборка="1.0"/>
<Приложение Название="Демонстрационное приложение" Сборка="1.1"/>
</Проект>
<Проект Название="Проект приложения с разделами">
<Приложение Название="Стандартное приложение" Сборка="1.0"/>
<Приложение Название="1С:Кабинет сотрудника" Сборка="2.0"/>
</Проект>
</Проекты>
</Сервер>
</Серверы>
так может выглядеть выражение запроса на языке XPath
, которое выполняет поиск элементов Проект
со значением атрибута Название
, равное Проект Демо CRM
, и его дочернего элемента Приложение
с названием Демо CRM
:
/Серверы/Сервер/Проекты/Проект[@Название = 'Проект Демо CRM']/Приложение[@Название = 'Демо CRM']
где через /
указываются элементы, в []
после @
указывается атрибут, а в ''
— его значение.