Парсер
На этой странице

Осуществляет разбор различных структур данных для выделения необходимого результата. Может работать с
JSON-структурами
XML-структурами
HTML- структурами
текстовыми документами
На уровне сценария могут быть организованы циклы и условия. Наиболее частое использование для разбора ответов от компонентов Web-запрос, Монитор и Операция.

Название | Описание |
Документ | Аргумент, содержащий структуру, подлежащую разбору. |
Алгоритм |
|
Поисковый запрос | Строка с поисковым запросом для выбранного алгоритма. Подробно описано в Правила поиска различных алгоритмов Парсера |
Функция | В зависимости от алгоритма используются различные функции. Подробнее в Функции различных алгоритмов Парсера |
Номер элемента | (только для алгоритма Регулярные выражения) Указывает индекс элемента в списке элементов, обнаруженных по шаблону в исходном документе. Нумерация начинается с 0. |
Номер группы | (только для алгоритма Регулярные выражения) Указывает номер группы в списке захваченных групп выбранного элемента. Имеет значение только при указании в поисковом запросе групп захвата (выделяются круглыми скобками в соответствии с синтаксисом регулярных выражений). |
Номер атрибута | (только для алгоритмов xml и html) Указывает номер атрибута |
Имя атрибута | (только для алгоритмов xml и html) Указывает имя атрибута |
Результат в переменную | Переменная, в которую будет сохранен результат применения поискового запроса к документу. |
Ошибка в переменную | Переменная, в которую сохраняется текст ошибки. |
Переход | Компонент, на который передается управление. Переход по умолчанию |
Переход, ошибка | Компонент, на который передается управление в случае ошибки |
Описание | Описание компонента |
Функции различных алгоритмов Парсера
Функция для алгоритма Парсер JSON.
Вариант | Описание |
Содержимое | Возвращает обнаруженный элемент вместе с содержимым. |
Восстановленное содержимое | В ответе убраны внешние признаки JSON элемента |
Количество элементов | Возвращает количество найденных элементов. |
Список ключей | Возвращает список ключей в найденном объекте. |
Функция для алгоритма Парсер XML.
Вариант | Описание |
Документ | Возвращает выбранный элемент целиком вместе с содержимым. |
Содержимое | Возвращает содержимое выбранного элемента, исключая сам элемент. |
Количество элементов | Возвращает количество обнаруженных элементов. |
Значение атрибута | Возвращает значение указанного атрибута выбранного элемента. |
Имя атрибута | Возвращает имя атрибута по его индексу в выбранном элементе. |
Количество атрибутов | Возвращает количество атрибутов в выбранном элементе. |
Функция для алгоритма Регулярные выражения.
Вариант | Описание |
Содержимое | Возвращает содержимое указанной группы из указанного элемента. Отсчет элементов с 1 (значение по умолчанию), отсчет групп с 0 (значение по умолчанию 1), причем нулевая группа – это полное содержание элемента. Применение в поисковом шаблоне группировок (круглые скобки) влечет необходимость указывать корректное значение интересующей группы, указание неподходящего индекса приводит к завершению работы компонента с ошибкой. |
Количество элементов | Возвращает количество обнаруженных элементов, соответствующих поисковому шаблону. |
Количество групп | Возвращает количество захваченных групп в обнаруженном элементе с указанным индексом. Необходимо указание номера элемента, по умолчанию 1. Если группировка в поисковом шаблоне не используется, то возвращается значение 0. |
Функция для алгоритма Парсер HTML.
Вариант | Описание |
Документ | Возвращает выбранный элемент целиком вместе с содержимым. |
Содержимое | Возвращает содержимое выбранного элемента, исключая сам элемент. |
Количество элементов | Возвращает количество обнаруженных элементов. |
Значение атрибута | Возвращает значение указанного атрибута выбранного элемента. |
Имя атрибута | Возвращает имя атрибута по его индексу в выбранном элементе. |
Количество атрибутов | Возвращает количество атрибутов в выбранном элементе. |
Правила поиска различных алгоритмов Парсера
Алгоритм JSON
Запросом к парсеру JSON является строка, определяющая ключи свойств объектов или номера элементов в массиве, разделенных символом /.
При выполнении запроса слева направо парсер на каждом этапе углубляется внутрь структуры JSON.
Пример исходного json
{ "result": "ok", "errormsg": "", "chat": [ { "sessId": "uvajoqnx0qcpbjoflxr", "msgs": [ { "msgId": 8255, "msgDt": 1491292390, "msgData": { "type": "text", "data": "Добрый день. Выберите интересующий Вас вопрос." }, "msgSender": "op" }, { "msgId": 8256, "msgDt": 1491292391, "msgData": { "type": "buttons", "data": "Связаться с usr 6" }, "msgSender": "ab" }, { "msgId": 8257, "msgDt": 1491292392, "msgData": { "type": "buttons", "data": "Связаться с usr 8" }, "msgSender": "ab" } ] } ] }
Запрос | Функция | Результат |
| Содержимое | uvajoqnx0qcpbjoflxr |
Количество элементов | 1 | |
| Содержимое | 8257 |
Количество элементов | 1 | |
| Содержимое |
|
Количество элементов | 2 | |
| Список ключей | ["sessId","msgs"] |
Алгоритм XML
Пример документа XML:
<configuration version="16"> <folder id="x.demo.oktell.ru" label="x.demo.oktell.ru" path="c:\rtx_mg3\Media\domains\x.demo.oktell.ru.ru" type="readwrite" rescanIntervalS="10" ignorePerms="false" autoNormalize="true"> <device id="RXYYDPI-SVKNBMF-YADG7WD"></device> <minDiskFreePct>1</minDiskFreePct> <versioning></versioning> <copiers>0</copiers> <pullers>0</pullers> <hashers>0</hashers> <order>random</order> </folder> <folder id="demo.oktell.ru" label="demo.oktell.ru" path="c:\rtx_mg3\Media\domains\demo.oktell.ru" type="readwrite" rescanIntervalS="10" ignorePerms="false" autoNormalize="true"> <device id="RXYYDPI-SVKNBMF-01020304"></device> <minDiskFreePct>1</minDiskFreePct> <versioning></versioning> <copiers>0</copiers> <pullers>0</pullers> <hashers>0</hashers> <order>random</order> </folder> <gui enabled="true" tls="false" debugging="false"> <address>127.0.0.1:8384</address> <apikey>jeopL9MghPvTmweKDeGcoXhwRtrdaVDP</apikey> <theme></theme> </gui> </configuration>
Запрос | Функция | Результат |
| Документ |
|
| Документ |
|
| Документ |
|
Содержимое |
| |
Значение атрибута. | readwrite | |
Имя атрибута. | id | |
Количество атрибутов | 7 |
Алгоритм HTML
Общие правила:
Поиск по наименованию тега в двойных кавычках, например,
"br"Последовательность тегов формируется разделителем |, например,
"html"|"head"|"title"Получения одного из одинаковых тегов производится добавлением индекса после разделителя тега (начиная с нуля), например,
"html"|"br"|1|"title"По умолчанию переход к поиску следующего тега происходит с выбором нулевого тега.
Запрос
"html"|0|"head"|0|"title"|0равносилен запросу"html"|"head"|"title", т.е запрос по имени тега всегда возвращает список.Запрос можно строить по индексам, например,
"0|0|1"Для обращений к атрибутам тега используется скобки.
Запрос
"html"|"head"|("charset")выдаст список родительских тегов "head" в которых присутствует атрибут "charset".Запрос
"html"|"head"|("type="test/css")выдаст список родительских тегов "head" в которых атрибут"type"равен"test/css".
Пример документа HTML:
<HTML> <HEAD> <META a="1" b="2"/> </HEAD> <BODY> <p id="x1" class="abc">abc abc <a href="http://asdf.ru">link</a> <br> </p> <br><br> <p id="x2" class="abc" v="123">zxcv zxcv</p> </BODY> </HTML>
Запрос | Функция | Результат |
| Документ |
|
Содержимое |
| |
Количество элементов | 1 | |
Значение атрибута. | x1 | |
| Количество атрибутов | 2 |
| Документ |
|
| Документ |
|
| Документ |
|
| Содержимое | zxcv zxcv |